温馨提示×

centos为啥运行c++程序报错

小樊
40
2026-10-11 21:12:11
栏目: 编程语言

在 CentOS 上运行 C++ 程序报错,原因可能有很多种。下面我按常见情况给你梳理一下,并给出排查思路。你看看符合哪一种。


一、编译阶段就报错(g++ 报错)

1. 没有安装 g++ / gcc

报错示例:

bash: g++: command not found

解决:

sudo yum install gcc gcc-c++ -y

2. C++11 / C++17 语法不支持

报错示例:

error: ‘nullptr’ was not declared in this scope

原因:CentOS 默认 g++ 版本较低(如 4.8.5)

解决:

g++ -std=c++11 test.cpp -o test
# 或
g++ -std=c++17 test.cpp -o test

如果还不够新:

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

二、编译成功,但运行报错

3. 找不到动态库(非常常见)

报错示例:

./test: error while loading shared libraries: libxxx.so: cannot open shared object file

解决:

ldd ./test        # 看缺哪个库

然后:

export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH

4. 权限问题

报错示例:

bash: ./test: Permission denied

解决:

chmod +x test
./test

5. glibc 版本不兼容

报错示例:

./test: /lib64/libc.so.6: version `GLIBC_2.14' not found

原因:程序在更高版本系统编译,CentOS 太老

解决:

  • 在 CentOS 上重新编译
  • 或使用静态编译:
g++ -static test.cpp -o test

三、运行时逻辑/系统错误

6. 段错误(Segmentation fault)

可能原因:

  • 数组越界
  • 空指针
  • 栈溢出

调试:

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

7. 系统资源限制

比如:

  • 打开文件数过多
  • 内存不足

查看:

ulimit -a
free -m

四、你可以这样快速定位

请你把完整报错信息贴出来,我可以直接帮你判断是哪一种,比如:

  • 编译报错(贴 g++ 输出)
  • 运行报错(贴终端输出)

如果你愿意,也可以告诉我:

  1. CentOS 版本(cat /etc/redhat-release)
  2. g++ 版本(g++ --version)
  3. 报错完整截图或文字

我可以一步一步帮你解决。

0 踩