CentOS默认安装的GCC版本都是4.8.5,但是编译安装Redis时会提示GCC版本太低,所以我们需要升级到最新版本,本次是将GCC升级到gcc-9.5.0

安装GCC

升级GCC前,先需要安装默认的GCC。

1
yum install -y gcc-c++

升级GCC

下载GCC安装包及依赖包

下载地址:Index of /gnu/gcc/gcc-9.5.0

解压gcc-9.5.0

1
2
tar -xf gcc-9.5.0.tar.gz  -C /usr/local/
cd /usr/local/gcc-9.5.0

打开gcc -> gcc-9.5.0/contrib/download_prerequisites,找到依赖包的名字:

1
2
3
4
gmp-6.1.0.tar.bz2                                                                                                                                                                          
mpc-1.0.3.tar.gz
mpfr-3.1.4.tar.bz2
isl-0.18.tar.bz2

将其下载下来,然后解压到/usr/local/gcc-9.5.0目录中

1
2
3
4
5
6
yum -y install bzip2

tar -xf gmp-6.1.0.tar.bz2 -C /usr/local/gcc-9.5.0
tar -xf mpfr-3.1.4.tar.bz2 -C /usr/local/gcc-9.5.0
tar -xf mpc-1.0.3.tar.gz -C /usr/local/gcc-9.5.0
tar -xf isl-0.18.tar.bz2 -C /usr/local/gcc-9.5.0

建立软链接

1
2
3
4
5
6
cd /usr/local/gcc-9.5.0

ln -sf gmp-6.1.0 gmp
ln -sf mpfr-3.1.4 mpfr
ln -sf mpc-1.0.3 mpc
ln -sf isl-0.18 isl

创建build目录

1
2
mkdir /usr/local/gcc-9.5.0/build
cd /usr/local/gcc-9.5.0/build

生成MakeFile

1
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

编译安装

1
2
make && make install
# 时间较长,我自己持续了3个小时左右。

升级完成后,系统还是使用旧版本的gcc,需要再进行以下操作:

1
2
3
4
5
cp /usr/local/lib64/libstdc++.so.6.0.22 /lib64
cd /lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.29 libstdc++.so.6

此时执行如下命令就行可以看到GLIBCXX_3.4.29了:

1
strings /lib64/libstdc++.so.6 | grep GLIBC

检查gcc版本

1
gcc -v

如果还显示的是旧的版本:

1
2
3
4
5
cd /usr/bin/
mv gcc gcc_back
mv g++ g++_back
ln -s /usr/local/bin/gcc gcc
ln -s /usr/local/bin/g++ g++

此时GCC升级完成。