背景
CentOS 6.5、CentOS 7 操作系统中安装的默认 GCC 版本为 4.4.7。在编译最新版本 Redis 时会提示相关 C++ 函数的错误,因此需要将 GCC 升级至较高版本。本文以 CentOS 6.5 为例,将 GCC 升级至 gcc-10.1.0,使用源码编译方式进行。
准备工作
- glibc 需要 2.17 及以上版本,不满足需要先升级 glibc,否则将会缺少定义函数。
- 20G 以上的硬盘空间。
- bzip2 命令可用,如果不可用需要安装 bzip2。
- gcc-10.1.0.tar.gz 源码包,下载地址:http://ftp.gnu.org/gnu/gcc/。
- gcc 10.1.0 编译时需要依赖的包:gmp-6.1.0.tar.bz2, isl-0.18.tar.bz2, mpfr-3.1.4.tar.bz2, mpc-1.0.3.tar.gz。下载地址:https://gcc.gnu.org/pub/gcc/infrastructure/, 依次找到下载即可。
编译源码
将上述压缩包下载好之后,上传到需要升级的 Linux 服务器中,使用下面的命令进行解压至 /usr/local/gcc-10.1.0 文件夹中。
# 解压
tar -zvxf gcc-10.1.0.tar.gz --directory=/usr/local/
tar -jvxf gmp-6.1.0.tar.bz2 --directory=/usr/local/gcc-10.1.0/
tar -jvxf isl-0.18.tar.bz2 --directory=/usr/local/gcc-10.1.0/
tar -jvxf mpfr-3.1.4.tar.bz2 --directory=/usr/local/gcc-10.1.0/
tar -zxvf mpc-1.0.3.tar.gz --directory=/usr/local/gcc-10.1.0/
# 创建软连接
cd /usr/local/gcc-10.1.0/
ln -sf gmp-6.1.0 gmp
ln -sf isl-0.18 isl
ln -sf mpc-1.0.3 mpc
ln -sf mpfr-3.1.4 mpfr
# 以上四个依赖分别执行 ./configure && make && make install
# 继续执行 configure,如果报错看下面可能遇到的问题
./configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --disable-multilib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-initfini-array --enable-gnu-indirect-function
# 进行 make 操作,这个时间比较长,要注意这里是否产生编译失败的信息
make -j4
编译成功后一定要备份老的版本:
mv /usr/bin/gcc /usr/bin/gcc485
mv /usr/bin/g++ /usr/bin/g++485
mv /usr/bin/c++ /usr/bin/c++485
mv /usr/bin/cc /usr/bin/cc485
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
make install
gcc -v

