你这个问题问得比较笼统,我先按**“在 CentOS 上配置 / 编译 / 运行 C++ 总是出问题”**来给你一个全面解释,基本能覆盖 90% 的情况。
CentOS(尤其是 7)的特点是:
所以新手最容易踩坑。
g++: command not found
sudo yum groupinstall "Development Tools"
或
sudo yum install gcc gcc-c++
验证:
g++ --version
⚠️ CentOS 7 默认是 g++ 4.8.5,不支持 C++17/20。
auto x = []<typename T>(T a){};
在 CentOS 7 上:
error: lambda cannot have template parameters
sudo yum install centos-release-scl
sudo yum install devtoolset-11
scl enable devtoolset-11 bash
然后:
g++ -std=c++17 main.cpp
fatal error: xxx.h: No such file or directory
| 问题 | 解决 |
|---|---|
没有 -I 指定头文件路径 |
g++ -I/path/include |
| 没装 devel 包 | yum install xxx-devel |
| 第三方库没装 | yum install boost-devel |
⚠️ CentOS 里开发库必须装 -devel 包
undefined reference to `pthread_create`
g++ main.cpp -lpthread
常见库:
-lpthread-lm-lstdc++(通常不用写)CMake Error: The CXX compiler identification is unknown
sudo yum install gcc-c++ cmake
如果用了 devtoolset:
scl enable devtoolset-11 bash
cmake ..
| 系统 | g++ 版本 | 建议 |
|---|---|---|
| CentOS 7 | 4.8 | ❌ 不推荐 |
| CentOS 8 | 8/9 | ⚠️ 勉强 |
| Rocky / Alma 9 | 11+ | ✅ 推荐 |
| Ubuntu 22.04 | 11/12 | ✅ 最推荐 |
你可以直接告诉我:
我可以一步一步帮你配到能编译为止。