在 CentOS 上“升级 C++ 配置版本”,通常有两种理解:
下面分别说明。
CentOS 7 默认是 gcc 4.8.5,不支持 C++17/20。
适用于 CentOS 7 / 8
# CentOS 7
yum install centos-release-scl -y
yum install devtoolset-11 -y
# 启用
scl enable devtoolset-11 bash
# 验证
gcc --version
g++ --version
常用版本:
⚠️
scl enable只在当前 shell 生效
永久生效可写进.bashrc:
source /opt/rh/devtoolset-11/enable
yum groupinstall "Development Tools" -y
yum install gmp mpfr mpc -y
wget https://ftp.gnu.org/gnu/gcc/gcc-11.3.0/gcc-11.3.0.tar.gz
tar -xf gcc-11.3.0.tar.gz
cd gcc-11.3.0
./configure --enable-languages=c,c++ --disable-multilib
make -j$(nproc)
make install
dnf install gcc-toolset-11 -y
scl enable gcc-toolset-11 bash
如果你只是想 使用更高版本的 C++ 标准:
g++ main.cpp -std=c++17 -o main
可选:
-std=c++11-std=c++14-std=c++17-std=c++20set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
g++ -dumpversion
或:
#include <iostream>
int main(){
std::cout << __cplusplus << std::endl;
}
| 输出 | 标准 |
|---|---|
| 201103 | C++11 |
| 201402 | C++14 |
| 201703 | C++17 |
| 202002 | C++20 |
基本只能手动编译 GCC,或迁移到 CentOS 7+
使用 SCL 不会影响系统 gcc,非常安全
如果你能告诉我:
我可以给你精确命令 ✅