CentOS 7.6
升级 gcc/g++的方法,不一定适用于其他linux系统
1.查看版本
g++ -v
gcc -v
当前查看版本,发现是4.8.5
,这已经是2015年的旧版本了,对c++11
的支持不是很完善,为了方便学习和编写新版本的代码,升级一下还是可以的
如果你的系统上没有gcc/g++,则尝试用下面的方法安装
yum install -y gcc gcc-c++
示例
[root@bt-7274:~]# yum install -y gcc gcc-c++
Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* centos-sclo-rh: ftp.sjtu.edu.cn
* centos-sclo-sclo: ftp.sjtu.edu.cn
Package gcc-4.8.5-44.el7.x86_64 already installed and latest version
Package gcc-c++-4.8.5-44.el7.x86_64 already installed and latest version
Nothing to do
2.升级
yum list dev\*gcc
用这个命令查看可以安装的版本有哪些
可以看到最新版本已经是11了,那我们就直接安装最新版本的吧
yum install devtoolset-11-gcc devtoolset-11-gcc-c++
Installed:
devtoolset-11-gcc.x86_64 0:11.2.1-9.1.el7 devtoolset-11-gcc-c++.x86_64 0:11.2.1-9.1.el7
Dependency Installed:
devtoolset-11-binutils.x86_64 0:2.36.1-1.el7.2 devtoolset-11-libstdc++-devel.x86_64 0:11.2.1-9.1.el7 devtoolset-11-runtime.x86_64 0:11.1-2.el7
Complete!
看到complete
就代表安装over了
3.生效
现在要做的就是让新安装的版本生效
source /opt/rh/devtoolset-11/enable
不过这样做,只能在当前bash生效,新建一个bash就会发现还是4.8.5
。要做的就是吧这个语句写入bashrc的配置文件中,让每次新建bash的时候自动执行一次就OK了
要修改的是/etc/bashrc
,强烈建议修改之前先备份一下
cp /etc/bashrc ~/bashrc.bak
随后执行下面俩命令
echo "source /opt/rh/devtoolset-11/enable" >> /etc/bashrc
source /etc/bashrc
现在就OK了,新建一个bash,再gcc -v
,发现已经是新版本了
4.关于man失效问题
升级了版本后,可能导致man手册失效。这是因为man的环境变量被修改了
# echo $MANPATH
/opt/rh/devtoolset-11/root/usr/share/man
如果你需要使用man命令,则还需要重新修改一下MANPATH
环境变量
export MANPATH=/usr/share/man
解决参考 man什么都搜不了的解决方案