在CentOS系统中升级GCC编译器是一个常见的需求,尤其是在开发需要新版GCC支持的项目时,CentOS默认的GCC版本可能较旧,因此需要通过额外步骤来获取最新版本,以下是详细的升级流程,帮助你在CentOS系统中安全高效地完成GCC升级。

检查当前GCC版本
在升级之前,首先需要确认当前系统中安装的GCC版本,打开终端,输入以下命令:
gcc --version
该命令会显示当前GCC的版本号,如果系统中未安装GCC,可以通过yum install gcc或dnf install gcc(CentOS 8及以上)安装基础版本。
准备升级环境
升级GCC前,建议确保系统已更新至最新状态,并安装必要的编译工具,执行以下命令:
sudo yum update -y sudo yum groupinstall "Development Tools" -y
Development Tools包含了gcc、g++、make等基础编译工具,是后续编译新GCC版本的必要依赖。
安装SCL源(推荐方式)
CentOS官方软件仓库中的GCC版本可能较新,但若需更高版本(如GCC 9、10等),建议使用Software Collections(SCL)源,SCL提供了多个版本的GCC,且与系统默认版本隔离,不会影响原有环境。
- 安装SCL仓库:
sudo yum install centos-release-scl -y
- 查看可用GCC版本:
yum list gcc*
在输出中查找以
gcc-toolset或devtoolset开头的包,例如devtoolset-9-gcc。
安装并启用新版GCC
选择目标版本(如GCC 9)并安装:
sudo yum install devtoolset-9-gcc* -y
安装完成后,通过以下命令临时启用新版GCC(当前终端会话有效):
scl enable devtoolset-9 bash
验证版本:
gcc --version
若显示GCC 9,则说明启用成功。
永久设置默认GCC
若希望将新版GCC设为系统默认版本,需创建符号链接,找到新GCC的安装路径(通常在/opt/rh/devtoolset-9/root/usr/bin/),然后替换旧版链接:
sudo mv /usr/bin/gcc /usr/bin/gcc.bak sudo ln -s /opt/rh/devtoolset-9/root/usr/bin/gcc /usr/bin/gcc sudo mv /usr/bin/g++ /usr/bin/g++.bak sudo ln -s /opt/rh/devtoolset-9/root/usr/bin/g++ /usr/bin/g++
执行后,所有终端会话均会使用新版GCC。

清理与验证
升级完成后,建议清理旧版本(如有必要)并验证编译功能,测试一个简单的C程序:
echo 'int main(){return 0;}' > test.c && gcc test.c -o test && ./test
若程序正常编译运行,说明升级成功。
FAQs
Q1:升级后如何切换回旧版GCC?
A:若通过SCL安装,可通过scl enable devtoolset-8 bash(替换为旧版本编号)临时切换;若创建了符号链接,可恢复备份文件并删除新链接:
sudo rm /usr/bin/gcc /usr/bin/g++ sudo mv /usr/bin/gcc.bak /usr/bin/gcc sudo mv /usr/bin/g++.bak /usr/bin/g++
Q2:升级GCC后,为什么编译提示“-std=c++11”等选项无效?
A:可能是新GCC默认标准较高,或旧项目编译参数不兼容,尝试指定标准:g++ -std=c++11 your_file.cpp,或检查项目CMake/Makefile中的编译器设置是否指向正确路径。