一、教程背景
CentOS 7 系统默认预装的 GCC 版本为 4.8.5(发布于 2015 年),而现代开发场景中,许多软件(如高版本 Python、TensorFlow、C++ 11+ 项目等)对 GCC 版本要求较高(需 5.4+ 及以上)。因此需升级 GCC,但直接覆盖系统默认 GCC 可能导致依赖冲突(如 yum
工具依赖旧版本)。
本教程采用 SCL(Software Collections)仓库 方式升级,可在不覆盖系统默认 GCC 的前提下,安装并使用高版本 GCC(以 GCC 9 为例,稳定且兼容性强),安全且灵活。
二、升级前准备
确保系统已联网,且拥有 root
权限(或使用 sudo
权限执行命令)。
三、详细升级步骤
1. 备份原有 YUM 源(关键:防止配置出错)
CentOS 7 停止官方维护后,默认 YUM 源可能失效,且后续需添加新仓库配置。先备份原有源文件,避免误操作后无法恢复:
1 | # 创建备份目录 |
2. 添加 SCL 仓库配置文件(使用阿里云源)
SCL 仓库是升级 GCC 的核心,这里选择 阿里云 SCL 源(国内访问速度快,稳定性高),手动创建仓库配置文件:
1 | # 用 vi 编辑器创建并编辑 centos-sclo-rh.repo 文件 |
打开编辑器后,按 i
进入编辑模式,完整复制以下内容(不要遗漏或修改格式):
1 | [centos-sclo-rh] |
复制完成后,按 Esc
退出编辑模式,输入 :wq
并回车(保存并退出 vi 编辑器)。
3. 清理 YUM 缓存并生成新缓存
新添加仓库后,需清理旧缓存、加载新仓库的包列表,确保后续安装能找到正确的软件包:
1 | # 清理所有 YUM 缓存 |
执行后耐心等待(时间取决于网络速度),若无报错则缓存生成成功。
4. (可选)安装 SCL 仓库基础包
多数情况下,步骤 2 添加的配置文件已足够,但若后续安装 GCC 时提示“仓库不存在”,可执行此步骤安装 SCL 仓库基础包:
1 | sudo yum install -y centos-release-scl |
5. 安装高版本 GCC(GCC 9)
通过 YUM 安装 devtoolset-9
(对应 GCC 9 版本),并添加 --nogpgcheck
参数(跳过 GPG 密钥验证,因 CentOS 7 官方密钥源已失效,不影响包安全性):
1 | sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils --nogpgcheck |
devtoolset-9-gcc
:GCC 9 核心包devtoolset-9-gcc-c++
:C++ 编译组件(如需编译 C++ 项目必装)devtoolset-9-binutils
:二进制工具集(辅助编译)
执行后等待安装完成(约 50MB 下载量),无报错则安装成功。
6. 启用高版本 GCC
SCL 安装的 GCC 不会自动生效,需手动启用,支持 临时启用 和 永久启用,根据需求选择:
方式 1:临时启用(仅当前终端有效)
适用于“临时使用高版本 GCC”的场景,关闭终端后恢复默认 GCC 4.8.5:
1 | scl enable devtoolset-9 bash |
方式 2:永久启用(推荐)
若需每次登录终端都自动使用 GCC 9,可将启用命令写入环境变量文件,分“当前用户”和“全局所有用户”两种场景:
场景 A:仅当前用户生效(推荐普通用户)
1 | # 将启用命令写入当前用户的 .bashrc 文件 |
场景 B:全局所有用户生效(需 root 权限)
适用于多用户服务器,所有用户登录后均使用 GCC 9:
1 | # 切换到 root 用户(若当前非 root) |
7. 验证 GCC 升级结果
执行以下命令查看当前 GCC 版本,确认是否升级成功:
1 | gcc -v |
若输出类似以下内容(版本号为 9.3.1 及以上),则说明升级成功:
1 | Using built-in specs. |
四、常见问题与注意事项
若需安装其他 GCC 版本:
本教程以 GCC 9 为例,若需安装 GCC 10,只需将命令中的devtoolset-9
替换为devtoolset-10
(如devtoolset-10-gcc
),其他步骤一致。系统默认 GCC 未被覆盖:
SCL 安装的 GCC 位于/opt/rh/devtoolset-9/root/usr/bin/
,系统默认 GCC(4.8.5)仍在/usr/bin/gcc
,若需临时使用旧版本,可直接执行/usr/bin/gcc -v
。安装时提示“无可用软件包”:
重新执行步骤 3(清理并生成缓存),或检查步骤 2 的仓库配置文件是否正确(确保baseurl
未写错)。
五、总结
通过本教程,可在 CentOS 7 上安全升级 GCC 至 9 版本(或更高),满足现代软件开发需求,且不影响系统原有依赖。若后续需编译软件(如 Python、C++ 项目),直接使用 gcc
或 g++
命令即可调用高版本工具。
加关注
关注公众号“生信之巅”。
![]() |
![]() |