在 CentOS 上管理 GCC 多版本,常见、稳妥的做法有下面几种,按“推荐程度 + 场景”给你梳理一下。
scl / devtoolset(CentOS 7/8 官方方式)# 安装 SCL
yum install centos-release-scl
# 安装 gcc 9
yum install devtoolset-9-gcc devtoolset-9-gcc-c++
# 临时启用
scl enable devtoolset-9 bash
# 查看版本
gcc --version
echo "source /opt/rh/devtoolset-9/enable" >> ~/.bashrc
✅ 优点:安全、官方、不污染系统
❌ 缺点:每次 shell 要 enable
# 安装依赖
yum install gmp-devel mpfr-devel libmpc-devel
# 下载源码
wget https://ftp.gnu.org/gnu/gcc/gcc-11.4.0/gcc-11.4.0.tar.gz
tar xf gcc-11.4.0.tar.gz
cd gcc-11.4.0
# 配置
./configure \
--prefix=/usr/local/gcc-11 \
--enable-languages=c,c++ \
--disable-multilib
# 编译(很慢)
make -j$(nproc)
make install
/usr/local/gcc-11/bin/gcc --version
alternatives --install /usr/bin/gcc gcc /usr/local/gcc-11/bin/gcc 100
alternatives --config gcc
✅ 优点:完全可控
❌ 缺点:编译慢、易踩坑
update-alternatives 管理多版本(最常用)适合:
alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8.5 50
alternatives --install /usr/bin/gcc gcc /usr/local/gcc-11/bin/gcc 100
alternatives --config gcc
同理管理 g++:
alternatives --install /usr/bin/g++ g++ /usr/local/gcc-11/bin/g++ 100
podman run -it centos:7 bash
# 或
docker run -it gcc:11
✅ 不污染主机
✅ 版本任意
cmake -DCMAKE_C_COMPILER=/usr/local/gcc-11/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/local/gcc-11/bin/g++ .
make CC=/usr/local/gcc-11/bin/gcc CXX=/usr/local/gcc-11/bin/g++
| 场景 | 推荐方式 |
|---|---|
| CentOS 7 系统 | devtoolset + scl |
| 多版本切换 | alternatives |
| 自定义版本 | 源码编译 |
| 新项目 | 容器 |
| CI / 开发 | 指定 compiler 路径 |
如果你愿意,可以告诉我:
我可以直接给你一套 可用命令。