在 Ubuntu 下,使用 gcc/g++ 编译程序时,常见的“查依赖库”需求一般有几种情况。下面按常见场景给你总结方法和命令。
lddldd your_program
示例输出:
linux-vdso.so.1 (0x00007fff...)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6
✅ 适合:
.so 文件objdumpobjdump -p your_program | grep NEEDED
或:
objdump -x your_program | grep NEEDED
readelfreadelf -d your_program | grep NEEDED
-v(verbose)gcc -v main.c -o main -lm
你能看到:
collect2 / ld.a / .so 路径gcc -print-search-dirs
gcc -print-file-name=libc.so
.so 名,找包dpkg -S libxxx.so.6
或:
apt-file search libxxx.so
(若没装 apt-file)
sudo apt install apt-file
sudo apt-file update
apt-cache search libxxx-dev
例如:
sudo apt install libssl-dev
gcc -E -Wp,-v - < /dev/null
gcc -print-search-dirs
LD_DEBUG=libs ./your_program
export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_PATH
sudo vim /etc/ld.so.conf.d/your.conf
写入:
/your/lib/path
然后:
sudo ldconfig
| 目的 | 命令 |
|---|---|
| 看运行依赖 | ldd |
| 看 NEEDED | readelf -d |
| 看链接过程 | gcc -v |
| 找库所属包 | dpkg -S / apt-file |
| 找 dev 包 | apt-cache search libxxx-dev |
如果你有具体报错信息(如 cannot find -lxxx 或 undefined reference),可以把内容贴出来,我可以帮你精准定位。