在 CentOS 上升级 C++(实际上是升级 GCC / G++ 编译器) 的方法取决于你的 CentOS 版本。下面按 最常见场景 给你一套清晰、可操作的方案。
gcc --version
g++ --version
常见情况:
这是 最安全、最稳定 的方式,不影响系统自带编译器。
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-11
可选版本:
scl enable devtoolset-11 bash
验证:
gcc --version
g++ --version
⚠️ 这种方式 只对当前 shell 生效
编辑 ~/.bashrc:
echo "source /opt/rh/devtoolset-11/enable" >> ~/.bashrc
source ~/.bashrc
sudo dnf install gcc-toolset-11
启用:
scl enable gcc-toolset-11 bash
或永久:
echo "source /opt/rh/gcc-toolset-11/enable" >> ~/.bashrc
有时 shell 里是新的 GCC,但构建系统仍用旧的。
export CC=/opt/rh/devtoolset-11/root/usr/bin/gcc
export CXX=/opt/rh/devtoolset-11/root/usr/bin/g++
cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..
wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz
tar -xf gcc-13.2.0.tar.xz
cd gcc-13.2.0
./contrib/download_prerequisites
mkdir build && cd build
../configure --disable-multilib --enable-languages=c,c++
make -j$(nproc)
sudo make install
❗ 风险较高,容易破坏系统环境
g++ -std=c++17 test.cpp
g++ -std=c++20 test.cpp
| 系统 | 推荐方式 |
|---|---|
| CentOS 7 | devtoolset-11 |
| CentOS 8 / Stream | gcc-toolset-11 |
| 生产环境 | ❌ 不要替换系统 GCC |
| 学习 / 开发 | ✅ SCL / Toolset |
如果你愿意,可以告诉我:
cat /etc/centos-release)我可以给你 精确到命令级别 的方案。