温馨提示×

centos为啥编译c++报错

小樊
45
2026-09-09 00:56:39
栏目: 编程语言

CentOS 上编译 C++ 报错的原因非常多,没有一个统一答案,但常见原因可以归纳成以下几类。你可以对照看看是哪一种,或者把具体报错信息发出来,我可以直接帮你定位。


一、最常见原因(90% 新手都踩过)

1️⃣ 没有安装 g++(只有 gcc)

很多人以为装了 gcc 就能编 C++,其实 C++ 需要 g++

g++ test.cpp -o test
# 报错:command not found: g++

✅ 解决:

yum install -y gcc-c++

2️⃣ 缺少开发工具(没装 Development Tools)

很多最小化安装的 CentOS 根本没有编译环境

✅ 解决:

yum groupinstall "Development Tools" -y

3️⃣ 头文件找不到(#include 报错)

比如:

fatal error: iostream: No such file or directory

原因:

  • 没装 g++
  • 系统是 minimal 安装

✅ 解决:

yum install -y gcc-c++

二、C++ 标准相关问题(非常常见)

4️⃣ 使用了 C++11 / C++14 / C++17 但没加参数

比如 autonullptrthread 报错

❌ 错误:

g++ test.cpp

✅ 正确:

g++ -std=c++11 test.cpp
g++ -std=c++14 test.cpp
g++ -std=c++17 test.cpp

5️⃣ CentOS 自带 g++ 版本太低

CentOS 7 默认:

g++ 4.8.5

不支持:

  • C++17 部分特性
  • filesystem(需要 8+)

✅ 解决(升级):

yum install -y centos-release-scl
yum install -y devtoolset-9
scl enable devtoolset-9 bash

三、链接错误(不是编译错误)

6️⃣ 用了第三方库但没链接

比如用了 pthreadmath

❌ 错误:

undefined reference to `pthread_create`

✅ 解决:

g++ test.cpp -lpthread
g++ test.cpp -lm

四、系统中“坑”的地方

7️⃣ 源码文件后缀写错

  • .c → 按 C 编译
  • .cpp / .cc / .cxx → 按 C++ 编译

❌ 错误:

gcc test.c   # 实际是 C++ 代码

✅ 正确:

g++ test.cpp

五、你可以这样快速自查

把下面信息发给我,我可以直接告诉你哪里错了:

  1. CentOS 版本
cat /etc/redhat-release
  1. g++ 版本
g++ --version
  1. 完整报错信息(复制粘贴)

  2. 你的编译命令


如果你愿意,可以直接把报错贴出来,我帮你一行一行分析。

0