在 CentOS 上“选 C++ 编译版本”,通常说的是用哪个 g++/clang 版本来编译 C++ 程序,以及指定 C++ 标准(如 C++11/14/17/20)。下面分情况说明。
g++ --version
或
which g++
clang++ --version
g++ 4.8.5(只支持到 C++11,部分 C++14)g++ 8.x 或 10.xyum install centos-release-scl
yum install devtoolset-9-gcc-c++
scl enable devtoolset-9 bash
常用版本:
devtoolset-7 → GCC 7devtoolset-8 → GCC 8devtoolset-9 → GCC 9devtoolset-11 → GCC 11⚠️ 注意:scl enable 只在当前 shell 生效
永久生效(加到 ~/.bashrc):
source /opt/rh/devtoolset-9/enable
ls /usr/bin/g++*
如果你装了多个:
g++-9 main.cpp -o main
或建立软链接:
ln -sf /usr/bin/g++-9 /usr/local/bin/g++
cmake -DCMAKE_CXX_COMPILER=g++-9 ..
或在 CMakeLists.txt:
set(CMAKE_CXX_COMPILER "g++-9")
无论用哪个 g++,都要指定标准:
g++ -std=c++11 main.cpp
g++ -std=c++14 main.cpp
g++ -std=c++17 main.cpp
g++ -std=c++20 main.cpp
CMake 中:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
| 系统 | 推荐 |
|---|---|
| CentOS 7 | devtoolset-11 + C++17 |
| CentOS 8 | 系统 g++ + C++17 |
| 新项目 | C++17 / C++20 |
std::filesystem → 至少 g++ 8如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置命令。