需求概述
centos7默认gcc(g++)版本为4.8,需要升级至7.3。计算机受安全策略限制不能联网,但可以(有限制的)拷贝文件。
解决方案
编译源码安装。gcc依赖gmp、mpc、mpfr,但可以通过配置脚本一起编译。
软件包版本:
gcc-7.3.0
gmp-5.0.1
mpc-1.3.1
mpfr-4.1.1
操作步骤
1 下载源码
gcc源码:
Index of /gnu/gcchttps://ftp.gnu.org/gnu/gcc/
依赖软件:Index of /gnu/gmphttps://ftp.gnu.org/gnu/gmp/Index of /gnu/mpchttps://ftp.gnu.org/gnu/mpc/Index of /gnu/mpfrhttps://ftp.gnu.org/gnu/mpfr/
2 解压缩
将上述4个软件的压缩包解压缩到同一个目录下,得到:
gcc-7.3.0
gmp-5.0.1
mpc-1.3.1
mpfr-4.1.1
4个文件夹
3 创建软链
执行:
cd gcc-7.3.0
mkdir build
ln -s ../gmp5.0.1 gmp
ln -s ../mpc-1.3.1 mpc
ln -s ../mpfr-4.1.1 mpfr
cd build
4 执行配置脚本
执行
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
如果你选择的gcc版本与我不同,这一步有可能报错,根据错误信息增加(或升级)依赖软件即可。
5 编译安装
make
make install
make的时间很长,可以用-j参数多线程加速。
6 判断是否升级成功
使用如下命令查看gcc和g++版本
gcc -v
g++ -v
如果你是远程登录到服务器操作的,需要新建终端执行,否则有可能判断为旧版本但实际升级成功了。
注意事项
这种方法升级后电脑上会同时有2个版本的gcc,系统原装的在/usr/bin,新安装的默认位置是/usr/local/bin。
使用makefile/cmake编译时选择哪个版本与CC变量有关,需要妥善设置。这里坑很多,所以我直接禁用了旧版本。
按照下面的步骤操作可以禁用旧版本:
1、进入/usr/bin。
2、备份gcc、g++、c++、cpp四个文件。
3、建立软链(ln -s),将上述4个文件指向/usr/local/bin下对应的文件。
参考资料
【linux离线升级gcc版本---gcc4.8.5-->gcc12.2.0】-CSDN博客
---完---