linux 命令之ldd

ldd命令是用来查看程序运行时所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题

ldd使用方式:
ldd [option] file
option:
–version : 打印ldd的版本号
-v –verbose: 打印所有信息
-d –data-relocs:执行符号重部署,并报告缺少的目标对象(只对ELF格式适用)
-r –function-relocs:对目标对象和函数执行重新部署,并报告缺少的目标对象和函数(只对ELF格式适用)
-u –unused:打印未使用的直接依赖关系
–help:用法信息

ldd命令原理

  • ldd不是可执行程序,而是一个shell脚本(可以使用vi查看内容)
  • ldd能够显示可执行模块的依赖,其原理是通过设置环境变量,如: LD_TRACE_LOADED_OBJECTS。当 LD_TRACE_LOADED_OBJECTS环境变量不为空时,所有可执行的程序在运行时,都会只显示模块的依赖,而程序不真正执行。比如:
$ echo  $LD_TRACE_LOADED_OBJECTS

$ export  LD_TRACE_LOADED_OBJECTS=1
$ ls
    linux-gate.so.1 =>  (0xb77d7000)
    libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0xb77a5000)
    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb779c000)
    libacl.so.1 => /lib/i386-linux-gnu/libacl.so.1 (0xb7792000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75ed000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb75e8000)
    /lib/ld-linux.so.2 (0xb77d8000)
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb75cd000)
    libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0xb75c7000)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值