温馨提示×

centos为啥不能编译c++程序

小樊
43
2026-09-21 06:54:40
栏目: 编程语言

CentOS 本身是可以编译 C++ 程序的,所谓“不能编译”通常是因为环境或配置问题,而不是系统不支持。常见原因如下:


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

CentOS 默认 最小化安装不会带 g++。

检查是否安装了 g++

g++ --version

如果提示:

command not found

说明没装。

安装 C++ 编译环境

sudo yum install -y gcc-c++

安装完成后:

g++ --version

二、只装了 gcc,没装 g++

有人只装了:

yum install gcc

但 gcc 只能编译 C,不能编译 C++。

正确做法:

yum install gcc-c++

三、写的是 .cpp 文件,却用 gcc 编译

错误示例:

gcc test.cpp

可能会报一堆 C++ 相关错误。

✅ 正确方式:

g++ test.cpp -o test

四、CentOS 版本太老,编译器太旧

例如:

  • CentOS 7:默认 g++ 4.8
  • CentOS 6:g++ 4.4

某些现代 C++(C++11/14/17)特性不支持。

查看版本:

g++ --version

如果需要新版本,可:

  • 使用 devtoolset(推荐)
yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash

五、权限或路径问题

  • 没有写权限
  • 在只读目录编译
  • PATH 没包含 /usr/bin

检查:

which g++
echo $PATH

六、示例:一个正常可编译的 C++ 程序

// test.cpp
#include <iostream>
using namespace std;

int main() {
    cout << "Hello CentOS" << endl;
    return 0;
}

编译运行:

g++ test.cpp -o test
./test

七、常见错误对照表

现象 原因
g++: command not found 没装 g++
gcc 能编译 C,不能编译 C++ 没装 gcc-c++
报 C++11 特性错误 编译器太旧
编译成功但无法运行 权限 / 路径问题

如果你愿意,可以把具体的报错信息贴出来,我可以直接帮你定位是哪一种原因。

0 踩