ldd用法

NAME

ldd - 打印共享对象依赖项

USAGE

ldd [OPTION] ... FILE ...

OPTIONS

  • –help 打印帮助信息并退出
  • –version 打印版本信息并退出
  • -d, --data-relocs 执行重定位并报告任何丢失的对象(仅限ELF)。
  • -r, --function-relocs 对数据对象和函数执行重新定位,并报告任何缺少的对象或函数(仅限ELF)。
  • -u, --unused 打印未使用的直接依赖项
  • -v, --verbose 打印所有信息。比如,包含的符号版本信息。

DESCRIPTION

ldd会打印命令行上指定的每个程序或共享对象所需的共享对象(共享库)。 其使用和输出示例如下:
在这里插入图片描述

在通常情况下,ldd会将环境变量LD_TRACE_LOADED_OBJECTS的值设置为1并调用标准动态链接器(请参见ld.so(8))。这会导致动态链接器检查程序的动态依赖关系,并根据ld.so(8)中描述的规则查找和加载满足这些依赖关系的对象。对于每个依赖项,ldd会显示匹配对象的位置以及加载该对象的(十六进制)地址。(linux-vdso和ld-linux共享依赖项是特殊的;请参阅vdso(7)和ld.so(8)。)

SECURITY

请注意,在某些情况下(例如,程序指定的ELF解释器不是ld-linux.so),ldd的某些版本可能会试图通过直接执行程序来获取依赖信息,这可能会导致执行该程序ELF解释器中定义的任何代码,也许还会执行程序本身。

因此,永远不要在不受信任的可执行文件上使用ldd,因为这可能会导致执行任意代码。在处理不受信任的可执行文件时,更安全的选择是:

 $ objdump -p /path/to/program | grep NEEDED

然而,请注意,这个替代方案只显示可执行文件的直接依赖关系,而ldd显示可执行文件的整个依赖关系树。

BUGS

ldd不适用于a.out共享库。

ldd不适用于在发行的编译器支持ldd之前已经被构建的程序。如果在这样的程序上使用ldd,该程序将尝试以argc = 0运行,结果将不可预测。

SEE ALSO

pldd(1), sprof(1), ld.so(8), ldconfig(8)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值