在 CentOS 上编译 C++ 程序时报错的原因很多,常见原因和解决办法如下。你可以对照看看属于哪一种,也可以把具体报错信息贴出来我帮你精确定位。
报错示例:
g++: command not found
原因:
CentOS 默认 不安装 g++。
解决办法:
sudo yum install -y gcc gcc-c++
验证:
g++ --version
错误示例:
gcc test.cpp
问题:
gcc 默认按 C 编译,C++ 需要用 g++
✅ 正确方式:
g++ test.cpp -o test
报错示例:
fatal error: iostream: No such file or directory
原因:
gcc-c++✅ 解决:
sudo yum install -y gcc-c++
报错示例:
error: ‘nullptr’ was not declared in this scope
✅ 正确编译方式:
g++ test.cpp -std=c++11 -o test
或:
g++ test.cpp -std=c++17 -o test
报错示例:
fatal error: openssl/ssl.h: No such file or directory
✅ 解决(以 openssl 为例):
sudo yum install -y openssl-devel
常见库对应关系:
| 库 | 开发包 |
|---|---|
| OpenSSL | openssl-devel |
| MySQL | mysql-devel |
| zlib | zlib-devel |
| pthread | 默认支持 |
报错示例:
Permission denied
✅ 解决:
chmod +x test
或:
sudo ./test
| CentOS 版本 | 说明 |
|---|---|
| CentOS 7 | 默认 gcc 4.8,不支持 C++20 |
| CentOS 8 | gcc 8 |
| CentOS Stream 9 | gcc 11+ |
✅ 查看版本:
gcc --version
cat /etc/centos-release
你可以依次检查:
which g++
g++ --version
rpm -qa | grep gcc
如果你愿意,可以把下面信息发我:
例如:
CentOS 7
g++ test.cpp
报错:
test.cpp:1:22: fatal error: iostream: No such file or directory
✅ 我可以直接帮你逐行分析报错并给出解决方案。