在 CentOS 上选择或切换 C++(GCC / G++)版本,常见做法取决于你用的是 CentOS 7 / 8 / Stream。下面按场景给你一个实用指南。
gcc --version
g++ --version
CentOS 7 默认 GCC 很老(4.8),推荐用 devtoolset。
yum install -y centos-release-scl
例如安装 GCC 11:
yum install -y devtoolset-11
常见版本对应:
| devtoolset | GCC 版本 |
|---|---|
| devtoolset-7 | GCC 7 |
| devtoolset-8 | GCC 8 |
| devtoolset-9 | GCC 9 |
| devtoolset-10 | GCC 10 |
| devtoolset-11 | GCC 11 |
scl enable devtoolset-11 bash
启用后:
g++ --version
写入 ~/.bashrc:
echo "source /opt/rh/devtoolset-11/enable" >> ~/.bashrc
source ~/.bashrc
✅ 适合编译 C++17 / C++20
yum list available gcc*
例如 GCC 11:
dnf install -y gcc-toolset-11
scl enable gcc-toolset-11 bash
或永久:
echo "source /opt/rh/gcc-toolset-11/enable" >> ~/.bashrc
即使 GCC 版本高,也要指定标准:
g++ -std=c++17 main.cpp -o main
或:
g++ -std=c++20 main.cpp -o main
如果你需要 同时保留多个版本:
which g++
/usr/bin/g++
# 使用绝对路径
/opt/rh/devtoolset-11/root/usr/bin/g++
或在 CMake 中指定:
export CXX=/opt/rh/devtoolset-11/root/usr/bin/g++
yum install -y clang
clang++ -std=c++20 main.cpp
| 系统 | 推荐方式 |
|---|---|
| CentOS 7 | devtoolset-11 |
| CentOS 8 / Stream | gcc-toolset |
| 临时测试 | scl enable |
| 正式编译 | CMake + 指定 GCC |
如果你愿意,可以告诉我:
我可以给你一套最合适的具体命令。