Linux系统升级gcc到10.1.0版本
本次仅记录自己安装报错和遇到的坑,仅供参考。
查看本地的为4.8.5的版本

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

下载新版本
http://ftp.gnu.org/gnu/gcc/
https://mirrors.aliyun.com/gnu/gcc/gcc-10.1.0/
这里下载的比较快

-
tar -xzvf /gcc-10.1.0.tar.gz -C /usr/local/ #将包解压到/usr/local/下
-
cd /usr/local/
![image]()
下载gcc需要的依赖
-
cd gcc-10.1.0/
-
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,说明安装成功
-










浙公网安备 33010602011771号