在云服务器中使用
    
     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,安装成功了。
    
     
   
 
