之前发现开发机上安装的gcc版本太旧了,连C++11新特性都不支持,于是决定对其进行升级。本文详细记录了在CentOS 6上升级gcc的整个过程,特别是其中遇到的坑和解决办法。
安装依赖项
先把依赖项装好
sudo yum install glibc-devel bison flex texinfo build-essential
在安装的过程中就会发现翻车了:
$ ll
relocation error: /usr/lib64/libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
这时会发现几乎所有常见命令都无法执行了——因为他们都依赖C库,而现在C库处于gg状态。解决方案也很简单,两条指令就能搞定。想比于已经启动不了的ln,sln真是雪中送炭啊!
LD_PRELOAD="/lib64/libc-2.12.so"
sudo sln /lib64/libc-2.12.so /lib64/libc.so.6
下载源码
wget http://ftp.gnu.org/gnu/gcc/gcc-8.1.0/gcc-8.1.0.tar.xz
tar -xf ./gcc-8.1.0.tar.xz
cd ./contrib/
./download_prerequisites
cd ..
如果目标机网络不好,则需要下载gcc源码到本地,并且将./contrib/download_prerequisites中需要的4个依赖库源码下载好,然后手动上传、解压并设置链接。
tar -xf ./isl-0.18.tar.bz2
tar -xf ./mpc-1.0.3.tar.gz
tar -xf ./mpfr-3.1.4.tar.bz2
tar -xf ./gmp-