在 CentOS 上“升级 C++ 版本”通常指两件事之一:
下面分情况说明。
g++ --version
gcc --version
CentOS 7 默认一般是 g++ 4.8.5
CentOS 8 默认一般是 g++ 8/10
sudo yum install centos-release-scl
sudo yum install devtoolset-11
启用:
scl enable devtoolset-11 bash
验证:
g++ --version
支持的版本示例:
⚠️ 只在当前 shell 生效,退出后恢复
永久生效(不推荐全局改):
echo "source scl_source enable devtoolset-11" >> ~/.bashrc
yum install -y gmp mpfr mpc
wget https://ftp.gnu.org/gnu/gcc/gcc-11.3.0/gcc-11.3.0.tar.gz
tar -xzf gcc-11.3.0.tar.gz
cd gcc-11.3.0
./configure --enable-languages=c,c++ --disable-multilib
make -j$(nproc)
make install
⚠️ 风险高,容易破坏系统
sudo dnf install gcc-toolset-11
scl enable gcc-toolset-11 bash
sudo dnf install gcc-c++
gcc --version
如果你是运行别人编译的程序报错:
GLIBCXX_3.4.29 not found
说明需要新版 libstdc++:
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
解决方式:
set(CMAKE_CXX_STANDARD 17)
或编译时:
g++ -std=c++17 main.cpp
| 系统 | 推荐方式 |
|---|---|
| CentOS 7 | devtoolset-11 |
| CentOS 8 | gcc-toolset-11 |
| 生产环境 | 不要替换系统 GCC |
| 编译程序 | 用 SCL 临时启用 |
如果你能告诉我:
我可以给你更精确的命令。