linux ldd命令查看程序使用的模块

语法:

ldd (选项) (文件名)

选项
–version:打印指令版本号;
-v:详细信息模式,打印所有相关信息;
-u:打印未使用的直接依赖;
-d:执行重定位和报告任何丢失的对象;
-r:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数;
–help:显示帮助信息。

文件名
一般为:.so .a .la等文库 或 可执行文件
若设置参数为*,则对当前目录下所有满足要求的文件进行ldd命令。

注意:在 ldd 命令打印的结果中,“=>”左边的表示该程序需要连接的共享库的名字,右边表示由 Linux 的共享库系统找到的对应的共享库在文件系统中的具体位置。默认情况下, /etc/ld.so.conf 文件中包含有默认的共享库搜索路径。一般情况下,下载的各种工具都默认在usr/lib和lib/的目录下寻找共享库。

使用示例:

打印执行程序tccmy的依赖库及路径
在这里插入图片描述
打印tccmy的详细信息:
在这里插入图片描述
lib/ 包含了所有对系统有用的库文件。简单来说,它是应用程序、命令或进程正确执行所需要的文件。在 /bin 或 /sbin 目录中的命令的动态库文件正是在此目录中。内核模块同样也在这里。

/lib32 和 /lib64 这两个文件夹包含了特殊结构的库文件。它们几乎和 /lib 文件夹一样,除了架构级别的差异。

/usr/lib 所有软件的库都安装在这里。但是不包含系统默认库文件和内核库文件。

使用局限:

ldd命令可以打印可执行文件使用到的所有隐式调用的动态库,因为这些库的引用信息已经被编译到可执行文件中了。并且即使这些库又隐式调用了其它的库,ldd命令无论有多少层,都可以将其打印出来。
例:
main里调用libb.so,libb.so中调用liba.so:
在这里插入图片描述
在这里插入图片描述

但如果可执行文件或其隐式调用的库中显式调用了动态链接库,ldd无法识别,因为显式调用的库是在执行过程中被加载到内存或卸除的,ldd命令并不实际执行文件,因此无法识别。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值