Linux系统升级gcc到10.1.0版本

本次仅记录自己安装报错和遇到的坑,仅供参考。

查看本地的为4.8.5的版本

image

一般Linux操作系统默认的gcc版本都比较低,Centos7系统默认的gcc版本为4.8.5.gcc是从4.7版本开始支持C++11的,4.8版本对C++11新特性的编译支持还不够完善,因此如果需要更好的体验C++11以及以上版本你的新特性,需要升级gcc到一个较高的版本。

本文以升级到10.1.0为例

gcc --version

image

下载新版本

http://ftp.gnu.org/gnu/gcc/

https://mirrors.aliyun.com/gnu/gcc/gcc-10.1.0/

这里下载的比较快

image

  1. tar -xzvf /gcc-10.1.0.tar.gz -C /usr/local/ #将包解压到/usr/local/下
  2. cd /usr/local/

    image

    下载gcc需要的依赖

    1. cd gcc-10.1.0/
    2.  vim contrib/download_prerequisites

      image

       https://gcc.gnu.org/pub/gcc/infrastructure/

      下载并上传服务器

      在服务器上wget下载好4个依赖包后,解压到目录gcc-10.1.0

      image

      tar -jvxf gmp-6.1.0.tar.bz2 -C /usr/local/gcc-10.1.0/
      tar -jvxf isl-0.18.tar.bz2 -C /usr/local/gcc-10.1.0/
      tar -jvxf mpfr-3.1.4.tar.bz2 -C /usr/local/gcc-10.1.0/
      tar -zvxf mpc-1.0.3.tar.gz -C /usr/local/gcc-10.1.0/

      在目录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
      #查看建立的软连接
      ll -h

      image

      image

       

      编译并安装gcc

      在目录gcc-10.1.0下依次执行下面两个命令

      mkdir build && cd build
      ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

      ##我的本地环境编译报错了

      [root@localhost build]# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

      image

      看提示缺少缺少 C 编译器

      安装C编译器

      # 安装 gcc 和基本开发工具
      yum install gcc
      # 或安装完整的开发工具组(包括 make、g++ 等)
      yum groupinstall "Development Tools"


      重新运行配置脚本

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

       

      如果上面的命令执行正确,可以看到生成的makefile文件,上述命令执行完成后,build下面可以看到下面几个文件

      config.log
      config.status
      Makefile
      serdep.tmp

      再执行

      ../configure --prefix=/usr/local/gcc-10.1.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib

      然后在build目录下面执行下面命令。编译安装gcc

      make -j4 && make install

      ##这里我的本地内存为3G,内存太小,再次执行报错

      image

       这个错误通常是由于编译过程中的某些问题导致的,可能是依赖项缺失、编译器问题、内存不足等。

      检查系统依赖和编译器

      确保所有必要的开发工具和库已安装:

      # 对于 CentOS/RHEL:
      yum groupinstall "Development Tools"
      yum install gmp-devel mpfr-devel libmpc-devel zlib-devel

      清理并重新开始编译

      # 在 build 目录中
      make distclean
      cd ..
      rm -rf build
      mkdir build
      cd build

      使用更简单的配置选项重新开始:
      # 在 build 目录中
      ../configure --enable-languages=c,c++ --disable-multilib
      make -j2  # 使用更少的并行任务,减少内存压力
      该过程比较漫长,大约需要2小时以上,需要耐心等待,如果编译安装过程没有报错,最后一段打印大概是这样:

      image

      安装

      make install

      安装完成,查gcc --version  还是老版本

       

      更新gcc

      如果你在Linux命令行中输入:gcc --version,发现现实的还是原来的版本,这是因为gcc还没有更新,执行的还是原来的命令

      原来的命令位于目录/usr/bin/gcc等目录下面,为了不覆盖原来的命令,将原来的相关内容进行备份处理,执行如下命令

      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

       

      安装的gcc新版本位于/usr/local/bin目录下面,需要为新版本创建软连接

      ln -s /usr/local/bin/gcc /usr/bin/gcc
      ln -s /usr/local/bin/g++ /usr/bin/g++
      ln -s /usr/local/bin/c++ /usr/bin/c++
      ln -s /usr/local/bin/gcc /usr/bin/cc
      ln -s /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

      输入gcc -v 查看版本

      image

       可以看到版本已经变成了安装的最新版本10.1.0,说明安装成功

       

       

     

 

posted @ 2025-09-16 14:15  徐创业  阅读(74)  评论(0)    收藏  举报