我该如何找出可执行文件所依赖的DLL?
在使用GNU开发工具链(gcc
等)的系统上,我使用ldd
来查找,但是在像Mac OS X这样的clang
系统上(没有ldd
),应该怎么查找呢?
在Mac OSX上,您需要使用otool -L
而不是ldd
来查看库依赖关系。这样做无论你使用的编译器是什么都可以。其他操作系统可能会有其他工具,例如,在Windows上,您需要使用Dependency Walker
。
greadelf
和 nm
工具:https://unix.stackexchange.com/a/418357/43390,也可参考:https://dev59.com/KVcO5IYBdhLWcg3wpjMz。当尝试对 Linux 可执行文件运行 otool -L
命令时,会出现错误提示“object is not a Mach-O file type.”。 - 0 _llvm-readelf ---needed-libs
是 clang 的类似于 ldd 的工具。以下是官方文档
~/weechat $ llvm-readelf --needed-libs bin/weechat
NeededLibraries [
libc.so
libcurl.so
libdl.so
libgcrypt.so
libgnutls.so
libgpg-error.so
libiconv.so
libm.so
libncursesw.so.6
]
ldd
吗?操作系统必须能够找出所需的库,因此clang
和gcc
基本上要做相同的事情。 - MSaltersldd
。 - sdsotool -L
。我没有表达清楚的一点是编译器并不重要(MacOSX 有一个 gcc 端口)。 - MSalters