CentOS 升级 gcc 版本
1. 安装步骤
CentOS7 默认的 gcc 版本是4.8,有时候需要更高版本,这里介绍一下如何将 gcc 版本升级到 8.3.1
-
安装 centos-release-scl
yum install centos-release-scl
-
安装devtoolset,注意,如果想安装 9.* 版本的,就改成 devtoolset-9-gcc,以此类推
yum install devtoolset-8-gcc*
-
激活对应的devtoolset,所以你可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本
scl enable devtoolset-8 bash
-
查看 gcc 版本
gcc -v
2. FAQ
2.1 在执行yum install devtoolset-8-gcc*
的时候报错,说找不到对应的包
解决方案:
安装完成后在 /etc/yum.repos.d 目录下会出现 CentOS-SCLo-scl.repo 和 CentOS-SCLo-scl-rh.repo 两个文件,安装后源默认启用,问题就在这两个文件上。
-
修改CentOS-SCLo-scl.repo文件
vim /etc/yum.repos.d/CentOS-SCLo-scl.repo
-
修改此部分的 baseurl
[centos-sclo-sclo] name=CentOS-7 - SCLo sclo baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/ # mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo gpgcheck=0 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
-
修改CentOS-SCLo-scl.repo
vi /etc/yum.repos.d/CentOS-SCLo-scl.repo
-
修改此部分的 baseurl
[centos-sclo-rh] name=CentOS-7 - SCLo rh baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/ # mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh gpgcheck=0 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
-
刷新缓存
yum repolist yum clean all yum makecache
2.2 安装成功后重启再次执行gcc -v发现还是旧的版本
这条scl enable devtoolset-8 bash
激活命令只对本次会话有效,重启会话后还是会变回原来的4.8.5版本,要想随意切换可按如下操作。
首先,安装的devtoolset是在 /opt/rh 目录下的
每个版本的目录下面都有个 enable 文件,如果需要启用某个版本,只需要执行:
source ./enable
所以想要切换某个版本只需要执行:
source /opt/rh/devtoolset-8/enable
解决方案:
-
方案一:可以将对应版本的切换命令写个shell文件放在配了环境变量的目录下,需要时随时切换,或者开机自启
-
方案二:直接替换旧的gcc
旧的gcc是运行的 /usr/bin/gcc,所以将该目录下的gcc/g++替换为刚安装的新版本gcc软连接,免得每次enable
mv /usr/bin/gcc /usr/bin/gcc-4.8.5ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gccmv /usr/bin/g++ /usr/bin/g++-4.8.5ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++gcc --versiong++ --version