gpt4 book ai didi

linux - ldd 不适用于动态链接的二进制文件

转载 作者:IT王子 更新时间:2023-10-29 00:27:43 24 4
gpt4 key购买 nike

我有一个使用一堆 .so 文件的二进制文件。

bash-3.00$ file foo
foo: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.21, dynamically linked (uses shared libs), not stripped

但是如果我在这个文件上运行 ldd,它无法获取二进制文件所依赖的 .so 文件。'

bash-3.00$ ldd foo
not a dynamic executable
bash-3.00$

readelf 确实显示了二进制文件使用的共享库列表..

bash-3.00$ readelf -d  foo
Dynamic segment at offset 0x17c810 contains 70 entries:

Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libdl.so.2]

在这种情况下,为什么 ldd 无法获取库依赖项?

最佳答案

正如其中一条评论所说 - 您尝试在 64 位系统上使用 ldd 检查 32 位 ELF 对象。 ldd 使用标准动态链接器来跟踪依赖关系,因此如果您的平台没有被检查的 ELF 对象所需的链接器,ldd 将失败。在这些情况下,Readelf 和 objdump 更加健壮。

关于linux - ldd 不适用于动态链接的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16807560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com