Linux Study Lab !

当前位置:   网站首页 >> Linux 应用实践

CentOS 7手动编译安装gcc高版本

CentOS 7 库里自带的gcc版本比较低,是4.8.xx的,由于它只支持部分 C++ 14,不支持 C++ 17,为了编译高版本时就需要高版本的gcc编译器,最新的版本已经在8.xx了,但考虑到兼容性和依赖包匹配,现在还是建议使用7.5.xx版本的源码进行编译。编译gcc自然也需要gcc,所以CentOS7上还是需要安装gcc和c++的

yum -y install bzip2 wget gcc gcc-c++ gmp-devel mpfr-devel libmpc-devel make zlib zlib-devel

前往gnu站点找到gcc版本的源码,下载gcc,本例使用7.5.0作为范例.(需要注意如系统内gcc版本低,可能无法一次性编译到高版本,如4.8.x直接编译到10.5.0,需在中间选择一个版本作为跳板)

Index of /gnu/gcc/gcc-7.5.0

cd /tmp
wget https://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
tar -zxvf gcc-7.5.0.tar.gz
cd gcc-7.5.0

下载编译所需的依赖代码

./contrib/download_prerequisites
mkdir gcc-build-7.5
cd gcc-build-7.5

生成makefile文件

../configure --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --enable-gnu-indirect-function --with-tune=generic --disable-multilib

然后编译,使用参数-j ,cpu是四核就j4

make -j$(nproc)

编译耗时比较长,另外要注意swap分区要足够大,或者干脆没有swap分区,否则编译的缓存文件会撑爆然后编译报错,可以考虑临时挂载一个存储介质用来增加swap

查看当前gcc版本

gcc -v

然后安装编译结果的版本

make install

如果没有在编译时特别指定路径的话,默认install的路径是

/usr/local/bin/gcc

查看gcc版本确认版本更新

/usr/local/bin/gcc --version

编辑环境变量

vi ~/.bash_profile
在原PATH=路径内增加 /usr/local/bin
例:PATH=$PATH:$HOME/bin:/usr/local/bin
添加
LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
CC=/usr/local/bin/gcc
CXX=/usr/local/bin/g++

export PATH
export LD_LIBRARY_PATH
export CC
export CXX

保存上述更改后执行

source ~/.bash_profile


暂无必要

strings /usr/lib64/libstdc++.so.6 | grep GLIBC
find / -xdev -name "libstdc++.so*"
cp  /usr/local/lib64/libstdc++.so.6.0.24  /usr/lib64/
rm -rf /usr/lib64/libstdc++.so.6
ln -s /usr/local/lib64/libstdc++.so.6.0.24   /usr/lib64/libstdc++.so.6



发表我的评论

Hi,您需要填写昵称和邮箱!

  • 必填项
  • 必填项