在 CentOS 上“查 C++ 依赖”通常分几种场景,下面按常见需求给你总结:
ldd your_program
示例:
ldd a.out
输出类似:
libstdc++.so.6 => /lib64/libstdc++.so.6
libgcc_s.so.1 => /lib64/libgcc_s.so.1
libc.so.6 => /lib64/libc.so.6
如果是 C++ 程序,重点看:
libstdc++.so.6libgcc_s.so.1objdump -p your_program | grep NEEDED
或:
readelf -d your_program | grep NEEDED
rpm -qf /lib64/libstdc++.so.6
示例:
libstdc++-4.8.5-44.el7.x86_64
rpm -qa | grep libstdc++
或:
yum list installed | grep libstdc++
rpm -qf /usr/include/c++/4.8.5
rpm -qa | grep gcc
常见包:
gccgcc-c++libstdc++-devel安装:
yum install gcc-c++ libstdc++-devel
nm -D your_program | grep symbol_name
或运行程序看报错:
undefined reference to `std::...'
file your_program
看是否:
dynamically linkedstatically linked| 问题 | 原因 |
|---|---|
GLIBCXX_3.4.21 not found |
libstdc++ 版本太低 |
libstdc++.so.6: version 'CXXABI_1.3.9' not found |
gcc 版本太低 |
| 程序在本机编译,别人机器跑不了 | 缺 libstdc++ |
yum install centos-release-scl
yum install devtoolset-9
scl enable devtoolset-9 bash
如果你能说具体场景(比如:
✅ 查某个程序的依赖
✅ 查编译失败缺什么
✅ 查别人程序在你机器能不能跑)
我可以直接给你对应命令。