Centos7如何升級GCC
一、環(huán)境準備
1. 檢查當前 GCC 版本
gcc --version

2. 清理系統(tǒng)環(huán)境
sudo yum clean all sudo yum update -y
二、安裝 SCL 倉庫
此處我們使用scl來切換gcc版本
SCL(Software Collections)提供高版本軟件包,且與系統(tǒng)默認工具鏈隔離。
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安裝

解決方案 (切換為阿里云鏡像環(huán)境)
1、查看自己的源環(huán)境
主要查看 base是否為阿里云環(huán)境 以及 sclo rh 是否為阿里云環(huán)境(以下是配圖)
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、手動下載安裝文件
理論上各位不需要執(zhí)行這個步驟 重新執(zhí)行 sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ 命令即可 如果出現(xiàn)像我一樣 可依照我如此下載將文件名稱換成自己對于的即可
注意:我當時不知道為什么沒有下載下下來 在執(zhí)行命令時顯示有五個文件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、安裝環(huán)境
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 環(huán)境
scl enable devtoolset-9 bash # 驗證版本 gcc --version
切換成功!

四、永久切換為GCC 9.3
正常上述步驟后你的機器已經(jīng)擁有了 9.3的環(huán)境,但是因為 scl enable devtoolset-9 bash 只是當前會話有效 當你新開會話之后 gcc 版本就會失效(小伙伴們可以打開一個新的窗口驗證一下),所以建議設置成永久使用
1. 修改用戶環(huán)境變量
# 寫入配置信息 echo 'source /opt/rh/devtoolset-9/enable #This is gcc version' >> ~/.bashrc # 驗證是否添加成功 vim ~/.bashrc # 刷新配置 source ~/.bashrc
2. 驗證生效
打開新客戶端 驗證 gcc 版本是否生效

親測可用!
- 注:這里如果不想啟動 只需要把 寫入的數(shù)據(jù)刪除掉,打開新窗口就回變回原來的版本
- 注:大家安裝時 一定要注意自己的環(huán)境,目前我安裝redis用到了 9.X的GCC環(huán)境就不做其他演示,個人理解如果想要升級至 GCC 11 也是此流程,文件不同罷了。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

