温馨提示×

centos怎么查看c++依赖

小樊
39
2026-09-30 04:19:17
栏目: 编程语言

在 CentOS 上查看 C++ 程序或库的依赖,常见有几种场景,下面按“最常用 → 进阶”给你说明。


一、查看可执行文件 / 动态库的依赖(最常用)

1️⃣ ldd —— 查看运行时依赖

ldd your_program

或

ldd libxxx.so

示例输出:

libstdc++.so.6 => /lib64/libstdc++.so.6
libm.so.6 => /lib64/libm.so.6
libc.so.6 => /lib64/libc.so.6

✅ 用于查看 运行时依赖的动态库

⚠️ 如果显示 not found,说明缺库


2️⃣ objdump(更底层)

objdump -p your_program | grep NEEDED

或

objdump -p libxxx.so | grep NEEDED

二、查看 C++ 标准库相关依赖

查看 libstdc++ 版本

strings /lib64/libstdc++.so.6 | grep GLIBCXX

示例:

GLIBCXX_3.4.21
GLIBCXX_3.4.25

✅ 用来判断 C++11 / C++14 / C++17 支持情况


三、查看编译时的依赖(头文件 / 链接库)

1️⃣ 查看编译命令

g++ -v main.cpp -o main

或

make VERBOSE=1

2️⃣ 查看可执行文件引用的符号

nm -D your_program | grep ' U '

U 表示 未定义符号(需要外部库)


四、查看某个库属于哪个 RPM 包(CentOS 特有)

1️⃣ 已知库文件

rpm -qf /lib64/libstdc++.so.6

2️⃣ 查找缺失的库

yum provides libxxx.so.6

或(CentOS 8+)

dnf provides libxxx.so.6

五、查看 C++ 程序依赖的第三方库(进阶)

1️⃣ readelf

readelf -d your_program

重点看:

  • NEEDED
  • RUNPATH
  • RPATH

2️⃣ 静态分析 CMake 项目

find . -name "CMakeLists.txt" | xargs grep -i "target_link_libraries"

六、常见 C++ 依赖总结

依赖 说明
libstdc++.so.6 C++ 标准库
libgcc_s.so.1 GCC 运行时
libm.so.6 数学库
libc.so.6 C 标准库
libpthread.so.0 线程

七、典型问题示例

❌ 报错:

error while loading shared libraries: libstdc++.so.6: cannot open shared object file

✅ 解决:

yum install libstdc++

如果你能告诉我:

  • 是 可执行程序 / so 库 / CMake 项目
  • 还是 运行时缺库 / 编译失败

我可以给你更精确的命令。

0 踩