在CentOS 7.9上编译C++17项目应该使用哪个GCC版本?

在CentOS 7.9上编译C++17项目,建议使用以下GCC版本:

1. 最低要求版本

  • GCC 7或更高版本(C++17标准完全支持的最低版本)
  • CentOS 7.9默认的GCC版本是4.8.5,不支持C++17

2. 推荐解决方案

方案一:使用Devtoolset(推荐)

# 安装SCL(Software Collections)
sudo yum install centos-release-scl

# 安装devtoolset(选择其中一个)
sudo yum install devtoolset-9-gcc devtoolset-9-gcc-c++  # GCC 9.1
sudo yum install devtoolset-10-gcc devtoolset-10-gcc-c++ # GCC 10.2
sudo yum install devtoolset-11-gcc devtoolset-11-gcc-c++ # GCC 11.2

# 启用devtoolset
scl enable devtoolset-11 bash  # 临时启用
# 或
source /opt/rh/devtoolset-11/enable  # 在当前shell启用

方案二:编译安装最新GCC

# 安装依赖
sudo yum install gmp-devel mpfr-devel libmpc-devel

# 下载并编译GCC
wget https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz
tar xf gcc-11.2.0.tar.gz
cd gcc-11.2.0
./configure --disable-multilib --enable-languages=c,c++
make -j$(nproc)
sudo make install

方案三:使用CMake指定编译器

# CMakeLists.txt中指定
set(CMAKE_C_COMPILER /opt/rh/devtoolset-11/root/usr/bin/gcc)
set(CMAKE_CXX_COMPILER /opt/rh/devtoolset-11/root/usr/bin/g++)

3. 版本对比

版本 C++17支持度 获取方式 备注
GCC 7+ 完全支持 devtoolset-7 最低要求
GCC 9+ 完全支持 devtoolset-9 稳定推荐
GCC 11+ 完全支持 devtoolset-11 最新特性
GCC 13+ 完全支持 源码编译 最新版本

4. 验证安装

# 检查GCC版本
gcc --version

# 检查C++17支持
g++ -std=c++17 -dM -E -x c++ /dev/null | grep __cplusplus
# 应该输出:__cplusplus 201703L

5. 永久设置(可选)

# 在~/.bashrc中添加
source /opt/rh/devtoolset-11/enable

推荐使用devtoolset-11,因为它提供了较新的GCC版本(11.2.1),完全支持C++17,且与系统默认GCC隔离,不会影响系统其他组件。

云服务器