gpt4 book ai didi

linux - ldd 和 objdump 有什么区别?

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

我正在运行这两个命令,但得到了不同的输出:

$ ldd `which ls`
linux-gate.so.1 => (0x00db3000)
libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0x00ba2000)
librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0x007bf000)
libacl.so.1 => /lib/i386-linux-gnu/libacl.so.1 (0x004ce000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x00398000)
/lib/ld-linux.so.2 (0x00dea000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x00a83000)
libattr.so.1 => /lib/i386-linux-gnu/libattr.so.1 (0x00d3d000)

然后

objdump -x `which ls` | grep NEEDED
NEEDED libselinux.so.1
NEEDED librt.so.1
NEEDED libacl.so.1
NEEDED libc.so.6

这是怎么回事?我以为他们都给了库依赖?我关心的原因是我怀疑 ldd 是正确的,但我正在 ARM 上的 linux 上工作,据我所知,那里没有 ldd ...

最佳答案

您可以在输出中看到差异。

objdump 只是将对象本身列出的内容转储为包含未解析符号的库。

ldd 列出了 ld.so 实际加载的库。它按照图表向后移动,这样您就可以看到那些 库将加载什么。这就是 libpthread.so.0 如何在 ldd 输出中结束,尽管它不在 objdump 输出中。

因此 ldd 将提供一个非常非常好的画面,说明什么真正需要在运行时可用。但是,在解决编译/链接时问题时,objdump 非常有用。

关于linux - ldd 和 objdump 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11524820/

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