【发布时间】:2013-05-24 08:09:24
【问题描述】:
我有一个使用一堆 .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 位环境中。安装 32 位兼容性库应该可以解决此问题。
-
谢谢。就是这样。在 ubuntu 中,我能够安装 ia32-libs 并且 ldd 工作。但是在 RedHat 中似乎没有快速简便的方法来安装 32 位兼容性库。
标签: linux linker shared-libraries elf