在 CentOS 上“选 C++ 版本”一般涉及 编译器版本(gcc/g++) 和 C++ 标准(-std=c++11/14/17/20) 两个层面。下面按常见场景说明。
不管 gcc 版本如何,都可以通过编译参数指定 C++ 标准:
g++ main.cpp -std=c++11 -o app
g++ main.cpp -std=c++14 -o app
g++ main.cpp -std=c++17 -o app
g++ main.cpp -std=c++20 -o app
✅ 推荐:
c++17c++11 / c++14yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
查看版本:
gcc --version
g++ --version
devtoolset 对应 gcc 版本:
| devtoolset | gcc |
|---|---|
| 7 | 7.x |
| 9 | 9.x |
| 11 | 11.x |
⚠️ 注意:scl enable 只对当前 shell 有效
echo "source /opt/rh/devtoolset-11/enable" >> ~/.bashrc
dnf install gcc-toolset-11
scl enable gcc-toolset-11 bash
适合特殊需求,但耗时、易出错。
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
或:
target_compile_features(myapp PRIVATE cxx_std_17)
echo | g++ -std=c++17 -E -x c++ - | grep __cplusplus
或:
g++ -dM -E -x c++ /dev/null | grep __cplusplus
| 系统 | 推荐做法 |
|---|---|
| CentOS 7 | devtoolset-11 + c++17 |
| CentOS 8 | gcc-toolset-11 |
| 新项目 | C++17 |
| 老项目 | C++11 |
如果你能告诉我:
我可以给你更精确的一键配置方案。