我有一个使用一堆.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
Run Code Online (Sandbox Code Playgroud)
但是如果我在这个文件上运行ldd,它就无法获取二进制文件所依赖的.so文件.
bash-3.00$ ldd foo
not a dynamic executable
bash-3.00$
Run Code Online (Sandbox Code Playgroud)
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]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,为什么ldd无法获取库依赖项?