在 CentOS 上使用 C++ 经常遇到的“兼容性问题”,通常可以归为下面几类。你可以对照看看是哪一种,我再给你更具体的方案。
CentOS 7 默认:
error: ‘xxx’ was not declared in this scopestd::filesystem# CentOS 7
yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
g++ --version
常用版本:
耗时、易出错。
/lib64/libc.so.6: version `GLIBC_2.28' not found
/lib64/libstdc++.so.6: version `CXXABI_1.3.11' not found
✅ 在低版本系统上编译(最稳)
✅ 使用 -static-libstdc++ -static-libgcc
g++ main.cpp -static-libstdc++ -static-libgcc
✅ 用容器(Docker)统一环境
明确指定标准:
g++ -std=c++17 main.cpp
CMake:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
| 系统 | GCC | 建议 |
|---|---|---|
| CentOS 6 | 4.4 | 基本放弃 |
| CentOS 7 | 4.8 | devtoolset |
| CentOS 8 | 8/10 | 可用 |
| Stream 9 | 11+ | 现代 C++ |
✅ Docker
FROM centos:7
RUN yum install -y centos-release-scl && \
yum install -y devtoolset-11
编译、运行环境完全一致。
为了给你精准方案,你可以补充:
g++ --version)我可以直接帮你改命令 / CMake / Dockerfile。