在云服务器中使用
cat /etc/redhat-release
查看CentOS操作系统中的编号。
从图中可以看出这是
CentOS Linux release 7.9.2009 (Core)
。
我以前将自己的gcc升级到8.3,使用
gcc -v
可以查看一下当前gcc的版本。
下载源文件及解压
wget http://ftp.gnu.org/gnu/gcc/gcc-11.3.0/gcc-11.3.0.tar.gz
下载源码。
tar -zxvf gcc-11.3.0.tar.gz
进行解压。
解压完成后,如下图所示:
pwd
查看一下当前所处目录。
/root/gcc-11.3.0/contrib/download_prerequisites
自动下载所需要的依赖。
发现提示:
error: You must run this script in the top-level GCC source directory
。
编译前准备
cd gcc-11.3.0
进入到top-level GCC source目录——
/root/gcc-11.3.0
下。
./contrib/download_prerequisites
下载依赖包。
2023-02-12 16:00:53 URL:http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "gmp-6.1.0.tar.bz2" [1]
2023-02-12 16:02:00 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.6.tar.bz2 [1287202/1287202] -> "mpfr-3.1.6.tar.bz2" [1]
2023-02-12 16:02:43 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "mpc-1.0.3.tar.gz" [1]
2023-02-12 16:04:24 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> "isl-0.18.tar.bz2" [1]
./configure --prefix=/usr/local/gcc-11.3 --enable-bootstrap --enable-languages=c,c++ --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib
进行配置。
完成之后如下图:
进行编译及安装
make -j8
可以进行编译,
-j
后边可以跟上CPU核数的双倍。
最后发现报错:
fatal error: gnu/stubs-32.h: No such file or directory
使用
yum -y install glibc-devel.i686
找到依赖项。
安装完成之后如下图:
然后再次执行
make -j8
编译,出现下图的情况就是完成:
make install
进行安装。
建立软连接
cd /usr/bin
进入到/usr/bin目录下。
先进行原来可执行文件的备份:
mv gcc gcc_back
mv g++ g++_back
mv c++ c++_back
设立软链接:
ln -s /usr/local/gcc-11.3/bin/gcc gcc
ln -s /usr/local/gcc-11.3/bin/g++ g++
ln -s /usr/local/gcc-11.3/bin/c++ c++
更新libstdc
cd /usr/lib64
进入到lib64目录下。
mv libstdc++.so.6 libstdc++.so.6.back
备份。
ln -s /usr/local/gcc-11.3/lib64/libstdc++.so.6.0.29 libstdc++.so.6
设置软连接。
设置环境变量
echo export PATH=$PATH:/usr/bin >> /etc/profile # 因为安装过devtoolset-8-build,使用`source /opt/rh/devtoolset-8/enable`所以把gcc环境变量更改过,所以gcc无法从/usr/bin这个环境变量寻找,故而需要重新设定一下。
echo export LD_LIBRARY_PATH=/usr/local/gcc-11.3/lib:/usr/local/gcc-11.3/lib64:$LD_LIBRARY_PATH >> /etc/profile # 这是正常设定
source /etc/profile # 使环境变量生效
卸载gcc 8
sudo yum remove devtoolset-8-build
卸载devtoolset-8-build。
sudo yum remove devtoolset-8-gdb -y
卸载devtoolset-8-gdb。
sudo yum -y remove devtoolset-8-gcc devtoolset-8-gcc-c++
卸载devtoolset-8-gcc和devtoolset-8-gcc-c++。
使用
gcc -v
发现提示
-bash: /opt/rh/devtoolset-8/root/usr/bin/gcc: No such file or directory
,然后使用
source /etc/profile
使环境变量重新生效,再使用
gcc -v
发现显示为gcc 11.3,安装成功了。