一、yum方式升级gcc版本
1、查看目前版本
gcc -v
2、安装centos-release-scl
sudo yum install centos-release-scl
3、安装devtoolset
注意事项:如果想安装8版本的,就改成devtoolset-8-gcc,以此类推
sudo yum install devtoolset-11-gcc*
4、激活对应的devtoolset
(1)首先,安装的devtoolset是在 /opt/sh 目录下的,如图
每个版本的目录下面都有个 enable 文件,如果需要启用某个版本,需要执行
source ./enable
所以要想切换到某个版本,只需要执行
source /opt/rh/devtoolset-11/enable
可以将对应版本的切换命令写个shell脚本放在配了环境变量的目录下,需要时随时切换,或者开机自启
(2)也可以直接替换旧的gcc
旧的gcc是运行的 /usr/bin/gcc,所以将该目录下的gcc/g++替换为刚安装的新版本gcc软连接,免得每次enable
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-11/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-11/root/bin/g++ /usr/bin/g++
5、查看版本
二、源码编译
1、下载源码包并解压缩
wget http://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz
tar -xvf gcc-11.2.0.tar.gz
2、下载配置文件
./contrib/download_prerequisites
3、开始配置
mkdir build && cd build
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib --prefix=/usr/local
4、编译
make
#这一步需要时间非常久 可以使用 make -j 4 让make最多运行四个编译命令同时运行,加快编译速度(建议不要超过CPU核心数量的2倍)
5、安装
make install
6、查看版本
gcc -v
g++ -v
7、配置全局可用
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-11/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-11/root/bin/g++ /usr/bin/g++
8、更新动态库
strings /usr/lib64/libstdc++.so.6 | grep CXXABI
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6_bak
ln -s /usr/local/lib64/libstdc++.so.6.0.29 /usr/lib64/libstdc++.so.6
strings /usr/lib64/libstdc++.so.6 | grep CXXABI