0.前言
一般linux操作系统默认的g***版本都比较低,例如centos7系统默认的g***版本为4.8.5。g***是从4.7版本开始支持C++11的,4.8版本对C++11新特性的编译支持还不够完善,因此如果需要更好的体验C++11以及以上版本的新特性,需要升级g***到一个较高的版本。
本文给出了linux系统中涉及国家g***的操作步骤,供大家参考。
升级步骤可以大致分为下面四个步骤:
查看确认原来的g***版本
下载需要升级的g***版本
下载新版本g***需要的依赖
编译并安装g***新版本
查看确认g***原来的版本
linux命令行中输入:
g*** --version
可以看到显示如下:
g*** (G***) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright © 2015 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
一般很多linux系统默认的g***版本为4.8.5,该版本对C++11的支持还不够完善,可以将版本升级到一个更高的版本。本文以升级到版本10.1.0为例。
下载需要升级的g***版本并解压
2.1下载g***新版本
由于linux系统没有外网,本文给出的示例是先在windows系统上将g***版本下载,然后上传的linux系统中。
下载g***新版本地址为:
http://ftp.gnu.org/gnu/g***/
上面有很多g***版本,需要自己需要的版本进行下载即可。
本文以版本10.1.0为例,点击红色部分,下载文件g***-10.1.0.tar.gz:
2.2 将g***新版本上传到linux系统并解压
将下载好的g***版本上传到linux系统中。本文将版本放在目录:
/opt2/test_other/debug_test/
进入到/opt2/test_other/debug_test/目录,将文件解压到/usr/local目录下面:
tar -zvxf g***-10.1.0.tar.gz --directory=/usr/local/
解压之后可以在/usr/local目录下面看到解压后的g***目录:
下载并g***需要的依赖
3.1 查看g***需要的依赖
cd 到g***-10.1.0目录下面,查看需要的依赖:
vim contrib/download_prerequisites
可以看到需要的依赖以及版本如下:
从上面看到一共有四个依赖:gmp、mpfr、mpc以及isl。
3.2 下载需要依赖
在安装g***新版本之前一定要先下载这几个依赖(注意依赖的版本)。
依赖下载的地址:
https://g***.gnu.org/pub/g***/infrastructure/
下载好4个依赖之后,将文件上传到linux系统的目录/opt2/test_other/debug_test/下面。
3.3 将依赖解压到目录g***-10.1.0
cd到/opt2/test_other/debug_test/目录下面,用下面命令将gmp文件解压到目录g***-10.1.0:
tar -jvxf gmp-6.1.0.tar.bz2 --directory=/usr/local/g***-10.1.0/
用同样的命令可以将isl-0.18.tar.bz2、mpfr-3.1.4.tar.bz2解压到目录g***-10.1.0。
下面的命令将mpc-1.0.3.tar.gz解压到目录g***-10.1.0:
tar -zvxf mpc-1.0.3.tar.gz --directory=/usr/local/g***-10.1.0/
3.4 为新下载的依赖建立软链接
cd到g***-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
在目录g***-10.1.0下面查看建立的软连接:
ls -l | grep ^l
如果上面的软连接建立成功,会看到下面四个链接文件,显示如下:
编译并安装g***
4.1 编译并安装
在目录g***-10.1.0下面依次执行下面两个命令:
mkdir build && cd build
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
如果上面的命令执行正确,可以看到生成的makefile文件。上述命令执行完成之后,build下面可以看到下面几个文件:
config.log config.status Makefile serdep.tmp
注意在执行上面的第二个configure命令时,也可以通过prefix参数为新版本g***指定安装安装目录(如果没有指定默认为/usr/local/,这里本文没有指定):
../configure --prefix=/usr/local/g***-10.1.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib
然后在build目录下面执行的命令,编译安装g***:
make -j4 && make install
该过程时间比较漫长,大约需要2小时以上,需要耐心等待。如果编译安装过程没有报错,最后一段打印大概是这样:
4.2 更新g***
上面的过程执行完,如果你在linux命令行中输入:g*** -version,你会发现显示的还是原来的版本,这是因为g***还没有更新,执行的还是原来的g***命令。
原来的g***命令位于目录/usr/bin/g***等目录下面,为了不覆盖原来的命令。将原来的相关内容进行备份处理,执行如下命令:
mv /usr/bin/g*** /usr/bin/g***485
mv /usr/bin/g++ /usr/bin/g++485
mv /usr/bin/c++ /usr/bin/c++485
mv /usr/bin/*** /usr/bin/***485
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
安装的g***新版本位于/usr/local/bin目录下面,需要为新版本g***创建软链接:
ln -s /usr/local/bin/g*** /usr/bin/g***
ln -s /usr/local/bin/g++ /usr/bin/g++
ln -s /usr/local/bin/c++ /usr/bin/c++
ln -s /usr/local/bin/g*** /usr/bin/***
ln -s /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6
上面的步骤步骤完成之后,输入g*** -v查看版本:
可以看到版本已经变成安装的最新版本10.1.0了,说明安装成功。
【参考文章】
https://www.jb51.***/article/95974.htm
https://www.jb51.***/article/230581.htm
https://cloud.tencent.***/developer/article/1424725
https://blog.csdn.***/liyelool/article/details/118656509