linux查看一个c程序依赖的动态链接库

在linux下一个程序编译成功了,并不一定可以成功运行,原因是有些程序调用了动态链接库,而程序拷贝到其他电脑上由于缺少动态链接库导致无法运行。

可通过如下命令查看程序依赖哪些动态库:

ldd 程序

示例1:

mayue:~/nfs/gdb$ ldd gdbserver 
checking sub-depends for 'not found'
checking sub-depends for 'not found'
checking sub-depends for 'not found'
	libdl.so.0 => not found (0x00000000)
	libm.so.0 => not found (0x00000000)
	libc.so.0 => not found (0x00000000)
	/lib/ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x00000000)

示例2:

mayue:~/nfs/gdb$ ldd 60pe 
checking sub-depends for 'not found'
checking sub-depends for 'not found'
checking sub-depends for 'not found'
checking sub-depends for 'not found'
checking sub-depends for 'not found'
	libsqlite3.so => not found (0x00000000)
	libpthread.so.0 => not found (0x00000000)
	libdl.so.0 => not found (0x00000000)
	librt.so.0 => not found (0x00000000)
	libc.so.0 => not found (0x00000000)
	/lib/ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x00000000)

注意事项:动态链接库的调用前提要设置好环境变量

查看程序依赖的动态库:

readelf -a xxx|grep library

示例

mayue:~/nfs/gdb$ readelf -a 60pe|grep library
 0x00000001 (NEEDED)                     Shared library: [libsqlite3.so]
 0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
 0x00000001 (NEEDED)                     Shared library: [libdl.so.0]
 0x00000001 (NEEDED)                     Shared library: [librt.so.0]
 0x00000001 (NEEDED)                     Shared library: [libc.so.0]

参考资料
https://www.cnblogs.com/qingchen1984/p/7260801.html

发布了60 篇原创文章 · 获赞 43 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/mayue_web/article/details/104000443