binutils 常见问题
显示程序直接依赖的动态库
ldd 命令会显示程序依赖的所有库,如果只需要显示直接依赖的动态库,可以使用 objdump 命令获取,而且相比 ldd 命令默认只能显示当前系统架构的程序的依赖,objdump 命令可以显示非本地架构程序的依赖:
~# objdump -p XXX | grep NEEDED
19: NEEDED libssl.so.10
20: NEEDED libcrypto.so.10
21: NEEDED libdl.so.2.1
22: NEEDED libz.so.1
23: NEEDED librt.so.1
24: NEEDED libc.so.6.1
readelf 命令也可以实现类似效果:
~# readelf -d XXX | grep NEEDED
4: 0x0000000000000001 (NEEDED) Shared library: [libssl.so.10]
5: 0x0000000000000001 (NEEDED) Shared library: [libcrypto.so.10]
6: 0x0000000000000001 (NEEDED) Shared library: [libdl.so.2.1]
7: 0x0000000000000001 (NEEDED) Shared library: [libz.so.1]
8: 0x0000000000000001 (NEEDED) Shared library: [librt.so.1]
9: 0x0000000000000001 (NEEDED) Shared library: [libc.so.6.1]