温馨提示×

centos为啥编译c++会报错

小樊
45
2026-10-03 01:28:19
栏目: 编程语言

在 CentOS 上编译 C++ 报错的原因有很多,下面我按最常见情况给你梳理一下,你可以对照看是哪一类。


一、没有安装 C++ 编译器(最常见)

CentOS 默认 不一定装 g++。

现象

g++: command not found

解决

sudo yum install -y gcc-c++

安装完后检查:

g++ --version

二、用的是 gcc 编译 C++ 文件

现象

gcc test.cpp

报错类似:

undefined reference to `std::cout`

原因

gcc 默认按 C 语言处理。

解决

用 g++:

g++ test.cpp -o test

三、头文件找不到(开发包没装)

现象

fatal error: iostream: No such file or directory

原因

系统缺少 C++ 标准库头文件。

解决

sudo yum install -y gcc-c++ glibc-headers

四、CentOS 版本太老,C++11/14/17 不支持

现象

auto x = 1;

报错:

error: ‘auto’ not allowed in C++98

原因

CentOS 6/7 默认 g++ 比较老。

解决

显式开启标准:

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

如果还不够新,可以安装 devtoolset:

sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-11
scl enable devtoolset-11 bash

五、库没链接(undefined reference)

现象

undefined reference to `pthread_create`

解决

手动加库:

g++ test.cpp -lpthread

常见库:

  • -lpthread
  • -lm
  • -ldl

六、权限问题

现象

Permission denied

解决

chmod +x a.out

或换到自己目录编译。


七、SELinux / 文件系统问题(较少)

如果是 /tmp 或挂载盘:

mount | grep noexec

有 noexec 就不能执行。


快速自检清单 ✅

which g++
g++ --version
g++ -std=c++11 test.cpp -o test
./test

如果你愿意,可以把 具体的报错信息贴出来(哪怕是截图文字),我可以直接帮你定位是哪一类问题。

0 踩