有没有类似Windows的工具DependencyWalker适用于 Ubuntu?我想查看我的可执行文件所依赖的所有共享库。
答案1
在终端中执行:
ldd /path/to/your_executable
例子:
~$ ldd /bin/ls
linux-vdso.so.1 => (0x00007fff78fea000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00007f1940858000)
librt.so.1 => /lib/librt.so.1 (0x00007f1940650000)
libacl.so.1 => /lib/libacl.so.1 (0x00007f1940447000)
libc.so.6 => /lib/libc.so.6 (0x00007f19400c4000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f193fec0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1940a99000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f193fca2000)
libattr.so.1 => /lib/libattr.so.1 (0x00007f193fa9d000)
答案2
ldd
仅显示给定的可执行文件所依赖的共享库,但是 - 与 Dependency Walker 不同 - 它确实不是显示从每个共享库导入的符号(例如函数)。如果你想知道哪个符号可执行文件(或共享库)导入,你可以使用nm
有选项-D --undefined-only
. 这仍然不是告诉您从哪个特定库导入了哪些特定函数。不过,有一个脚本可以做到这一点:
https://github.com/dEajL3kA/dependencies.py
注意:您可能还想使用选项--recursive
来解决间接体面!这将为您提供依赖关系的“层次结构”视图,类似于 Dependency Walker 所做的。
lddtree
,可从pax-实用程序包,提供输出的“树”视图ldd
。