一、环境准备
1. 检查当前 gcc 版本
gcc --version

2. 清理系统环境
sudo yum clean all sudo yum update -y
二、安装 scl 仓库
此处我们使用scl来切换gcc版本
scl(software collections)提供高版本软件包,且与系统默认工具链隔离。
sudo yum install -y centos-release-scl
三、安装 gcc 9.3
1. 安装 devtoolset-9
sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++
如果报错如下,是因为centos 7 的scl仓库已停止维护,默认的镜像服务器已失效,导致无法通过yum安装

解决方案 (切换为阿里云镜像环境)
1、查看自己的源环境
主要查看 base是否为阿里云环境 以及 sclo rh 是否为阿里云环境(以下是配图)
yum repolist

2、切换配置信息
# 使用阿里云镜像 sudo wget -o /etc/yum.repos.d/centos-base.repo https://mirrors.aliyun.com/repo/centos-7.repo 修改所有仓库配置为阿里云地址: sudo sed -i 's|vault.centos.org|mirrors.aliyun.com/centos|g' /etc/yum.repos.d/*.repo
3、验证scl源 (如果和我的不一致可能回导致404 小伙伴可直接复制粘贴)
sudo vi /etc/yum.repos.d/centos-sclo-scl-rh.repo
[centos-sclo-rh] name=centos-7 - sclo rh baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/ enabled=1 gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/centos/rpm-gpg-key-centos-sig-sclo

4、重新构建
切记一定要多
sudo yum clean all # 清除 sudo yum update -y # 更新 sudo yum makecache #构建
sudo yum clean all sudo yum makecache
证明没有任何问题

5、手动下载安装文件
理论上各位不需要执行这个步骤 重新执行 sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ 命令即可 如果出现像我一样 可依照我如此下载将文件名称换成自己对于的即可
注意:我当时不知道为什么没有下载下下来 在执行命令时显示有五个文件404不找到 这是我手动配置的地址可以直接下载下来
wget http://vault.centos.org/centos/7/sclo/x86_64/rh/packages/d/devtoolset-9-runtime-9.1-0.el7.x86_64.rpm wget http://vault.centos.org/centos/7/sclo/x86_64/rh/packages/d/devtoolset-9-binutils-2.32-16.el7.x86_64.rpm wget http://vault.centos.org/centos/7/sclo/x86_64/rh/packages/d/devtoolset-9-gcc-9.3.1-2.2.el7.x86_64.rpm wget http://vault.centos.org/centos/7/sclo/x86_64/rh/packages/d/devtoolset-9-gcc-c++-9.3.1-2.2.el7.x86_64.rpm wget http://vault.centos.org/centos/7/sclo/x86_64/rh/packages/d/devtoolset-9-libstdc++-devel-9.3.1-2.2.el7.x86_64.rpm
6、安装环境
sudo yum install -y policycoreutils-python sudo yum install -y scl-utils
7、编译安装文件
注意:如果你有其他文件 也仿照此格式添加上
sudo rpm -uvh --force --nodeps devtoolset-9-runtime-9.1-0.el7.x86_64.rpm \
devtoolset-9-binutils-2.32-16.el7.x86_64.rpm \
devtoolset-9-gcc-9.3.1-2.2.el7.x86_64.rpm \
devtoolset-9-gcc-c++-9.3.1-2.2.el7.x86_64.rpm \
devtoolset-9-libstdc++-devel-9.3.1-2.2.el7.x86_64.rpm8、验证 gcc 是否安装成功
sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++

2. 激活 gcc 9.3 环境
scl enable devtoolset-9 bash # 验证版本 gcc --version
切换成功!

四、永久切换为gcc 9.3
正常上述步骤后你的机器已经拥有了 9.3的环境,但是因为 scl enable devtoolset-9 bash 只是当前会话有效 当你新开会话之后 gcc 版本就会失效(小伙伴们可以打开一个新的窗口验证一下),所以建议设置成永久使用
1. 修改用户环境变量
# 写入配置信息 echo 'source /opt/rh/devtoolset-9/enable #this is gcc version' >> ~/.bashrc # 验证是否添加成功 vim ~/.bashrc # 刷新配置 source ~/.bashrc
2. 验证生效
打开新客户端 验证 gcc 版本是否生效

亲测可用!
- 注:这里如果不想启动 只需要把 写入的数据删除掉,打开新窗口就回变回原来的版本
- 注:大家安装时 一定要注意自己的环境,目前我安装redis用到了 9.x的gcc环境就不做其他演示,个人理解如果想要升级至 gcc 11 也是此流程,文件不同罢了。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论