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

本文介绍在Linux环境下如何检查程序的动态链接库依赖,使用ldd命令和readelf工具,确保程序在不同计算机上能够顺利运行。文章提供具体示例并强调环境变量设置的重要性。

在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值