原因:使用源码安装指定版本会有很多问题,尤其是降级而且手动编译gcc往往耗时长,而且不一定能成功,使用devtoolset 可以快速切换gcc版本。
采用CentOS的一个第三方库SCL(软件选集)的 devtoolset ,SCL可以在不覆盖原系统软件包的情况下安装新的软件包与老软件包共存并且可以使用scl命令切换,不过也有个缺点就是只支持64位的。
可以先卸载yum安装的gcc
yum -q gcc
rpm -e gcc-8.5.0-4.el8_5.x86_64
提示有依赖,先删除依赖的文件
rpm -e gcc-c++-8.5.0-4.el8_5.x86_64
再执行
rpm -e gcc-8.5.0-4.el8_5.x86_64
成功。
1、查看当前系统中gcc版本
我的是当前最新版本,12.1.0
2、降级版本
## 安装第三方SCL源仓库
yum -y install centos-release-scl
可能会出现以下错误
解决办法:
执行以此执行以下命令
rpm -ivh https://cbs.centos.org/kojifiles/packages/centos-release-scl-rh/2/3.el7.centos/noarch/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
Retrieving https://cbs.centos.org/kojifiles/packages/centos-release-scl-rh/2/3.el7.centos/noarch/centos-release-scl-rh-2-3.el7.centos.noarch.rpm
再执行yum -y install centos-release-scl 就成功了
## 安装gcc 8.3.1 的版本
yum -y install devtoolset-8-gcc*
或
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils
如果安装版本9的就改为
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
如果7就是
yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils
其他版本同理。
## 激活gcc 8.3.1
scl enable devtoolset-8 bash
如果未版本7输入以下命令
scl enable devtoolset-7 bash
## 验证
gcc -v
但是具体安装某版本我就不知道了,比如安装8.11.1,当然是用源码包安装还是可以的。