背景:

centos7 yum安装的gcc版本是4.8.5版本的,很多工具依赖的是更高版本的gcc,手动升级gcc往往耗时长,而且不一定能成功,使用devtoolset 可以快速切换gcc版本。

安装centos-release-scl

yum install centos-release-scl

安装devtoolset

命令中的9代表gcc版本

//安装gcc 9 的版本
yum -y install devtoolset-9-gcc*
//安装gcc 7 的版本
yum -y install devtoolset-7-gcc*

激活

//激活gcc 9
scl enable devtoolset-9 bash
//激活gcc 7
scl enable devtoolset-7 bash

scl enable devtoolset-8 bash这个命令执行完之后才会切换gcc版本,并且这仅仅在当前bash生效,如果需要永久生效,可以请自行添加环境变量。

想要登陆就自动切换好gcc版本而不用每次都执行那条命令,我试了几种方法,想要知道哪些坑就往下看,下面是可行的方法,即在~/.bashrc 文件添加如下脚本:

#switch gcc version                                                                                                                                                                                                                                                           
if [[ $SET_GCC_VER != "true" ]]
 then 
     export SET_GCC_VER="true"
     echo "devtoolset enable"  
     scl enable devtoolset-8 bash
fi

~/.bashrc这个脚本是每次登陆都会执行的脚本,而执行scl enable devtoolset-8 bash 这个命令之后又相当于重新登陆,会再次执行~/.bashrc,而如果没有那些条件判断,这个~/.bashrc会循环调用,那就gg了,还好能使用Ctr+C杀掉进行。以上这个判断如果执行了一次之后会设置SET_GCC_VER这个环境变量,当下一次执行~/.bashrc的时候判断有这个环境变量就不会再次执行scl enable devtoolset-8 bash