Linux中的依赖关系parsing

在Windows下,我使用了一个名为dependency walker的程序来检查应用程序正在使用的库。 我想知道如何在Linux上实现这个标准二进制文件:

用于GNU / Linux 2.6.0的ELF 32位LSB可执行文件,Intel 80386,版本1(SYSV),dynamic链接(使用共享库),剥离

谢谢。

Solutions Collecting From Web of "Linux中的依赖关系parsing"

尝试:

ldd executable 

例如:

 [me@somebox ~]$ ldd /bin/ls linux-gate.so.1 => (0xb7f57000) librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7f4c000) libselinux.so.1 => /lib/libselinux.so.1 (0xb7f32000) libacl.so.1 => /lib/libacl.so.1 (0xb7f2b000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7ddc000) libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7dc4000) /lib/ld-linux.so.2 (0xb7f58000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7dc0000) libattr.so.1 => /lib/libattr.so.1 (0xb7dbb000) [me@somebox ~]$ 

请注意,这只会报告共享库。 如果您需要在编译时找出链接的静态库,那有点麻烦,特别是当您的可执行文件被“剥离”(无调试符号)时。

使用ldd

 ldd /bin/sh 

如果你想要的东西比迭代调用ldd少一些,并且更像MSVC依赖,你应该尝试Visual-ldd 。 它在四年内还没有更新,但由于ELF格式没有改变,所以它仍然可以工作。 它仍然不会向你展示这些库中的单个符号,因为你需要类似nm的东西,不幸的是我不知道这个GUI包装器。

使用ldd 。 它将显示二进制需要的动态库。

请注意,库本身可能需要更多的库。 为了得到这些,你可以在你运行ldd的库上运行ldd。