在 CentOS 上实现 多个 C++ 编译器(如 gcc/g++)版本共存,常见且稳妥的做法有几种,下面按推荐程度给你说明。
devtoolset(最推荐,CentOS 官方方式)CentOS 7 / 8 都支持,适合生产环境。
yum install -y centos-release-scl
yum install -y devtoolset-7
yum install -y devtoolset-9
yum install -y devtoolset-11
对应 gcc 版本:
scl enable devtoolset-11 bash
g++ --version
echo "source scl_source enable devtoolset-11" >> ~/.bashrc
✅ 优点:
适合需要 非常新版本(gcc 12/13) 的场景。
wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz
tar -xzf gcc-13.2.0.tar.gz
cd gcc-13.2.0
./contrib/download_prerequisites
mkdir build && cd build
../configure --prefix=/opt/gcc-13 \
--enable-languages=c,c++ \
--disable-multilib
make -j$(nproc)
make install
export PATH=/opt/gcc-13/bin:$PATH
export LD_LIBRARY_PATH=/opt/gcc-13/lib64:$LD_LIBRARY_PATH
✅ 优点:完全自定义
❌ 缺点:编译慢,维护麻烦
alternatives(不推荐用于 C++)alternatives --install /usr/bin/g++ g++ /opt/gcc-13/bin/g++ 60
alternatives --config g++
⚠ 不推荐原因:
cmake -DCMAKE_C_COMPILER=/opt/gcc-13/bin/gcc \
-DCMAKE_CXX_COMPILER=/opt/gcc-13/bin/g++ .
| 场景 | 推荐方式 |
|---|---|
| CentOS 7/8 正常开发 | devtoolset |
| 需要 gcc 12+ | 手动编译 |
| CI / 容器 | devtoolset |
| 系统级替换 | ❌ 不建议 |
如果你告诉我:
我可以直接给你一套 可复制的命令。