在 CentOS 上“降级”或切换 GCC 版本,强烈建议不要直接强行删除或覆盖系统自带的 GCC(如 CentOS 7 默认的 4.8.5),因为系统的 yum/dnf 以及部分底层库依赖于它。推荐的做法是多版本共存,按需切换。
你可以根据自己的实际情况,选择以下一种方法来“降级”或切换 GCC。
在 CentOS 7 中,很多人通过安装 devtoolset-9 等来升级 GCC。其实这并没有替换系统自带的 GCC,只是开启了新的环境变量。
scl enable 命令),gcc --version 就会变回系统默认版本(如 4.8.5)。sudo yum remove devtoolset-9-gcc devtoolset-9-gcc-c++
如果你之前手动编译安装新版本 GCC 时,执行 make install 直接覆盖到了系统的 /usr/bin/gcc,现在想降级恢复:
/usr/bin/gcc。yum 重新安装系统自带的 GCC 来覆盖你手动安装的版本:sudo yum reinstall gcc gcc-c++ gcc-gfortran
执行完后,运行 gcc --version 检查,通常会恢复为系统仓库的默认版本。如果你在 CentOS 8 上通过 dnf 安装了高版本 GCC(比如 GCC 10 或 11),想降级到仓库中的另一个旧版本(如 GCC 8):
# 1. 查看仓库中可用的旧版本
dnf list available gcc --showduplicates
# 2. 使用 downgrade 降级到指定版本(请替换为你查到的实际版本号)
sudo dnf downgrade gcc-8.5.0-1.el8.x86_64 gcc-c++-8.5.0-1.el8.x86_64
如果你需要使用某个特定的旧版本(例如 GCC 7),同时保留系统原有版本,建议使用 alternatives 工具管理,或者临时修改环境变量。
如果你只是想编译某个特定的软件而临时使用旧版 GCC,只需在编译前指定 PATH:
# 假设你的旧版 GCC 安装在 /opt/gcc-7/bin/
export PATH=/opt/gcc-7/bin:$PATH
# 验证版本
gcc --version
关闭终端后,系统 GCC 自动恢复正常,不会影响全局。
如果你将旧版 GCC 编译安装到了 /opt/gcc-7,并希望可以和系统自带版本随时切换:
# 将系统自带的 GCC 加入 alternatives(CentOS 7 自带通常是 4.8.5,路径可能略有不同)
sudo alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8.5 100
sudo alternatives --install /usr/bin/g++ g++ /usr/bin/g++ 100
# 将你安装的旧版 GCC 加入 alternatives
sudo alternatives --install /usr/bin/gcc gcc /opt/gcc-7/bin/gcc 50
sudo alternatives --install /usr/bin/g++ g++ /opt/gcc-7/bin/g++ 50
# 手动选择使用哪个版本(输入对应数字即可)
sudo alternatives --config gcc
sudo alternatives --config g++
libstdc++.so.6 动态库通常仍然较新(这通常没问题,老编译器能链接新标准库)。但如果你之前用高版本 GCC 编译过程序,降级后重新编译可能需要修改不兼容的新语法(如 C++17 特性在 GCC 4.8 中不支持)。devtoolset-N-gcc;CentOS 8 使用 gcc-toolset-N-gcc;使用第三方仓库前请确保已启用 epel 或 centos-release-scl。