clang的类似于ldd的工具是什么?

13

我该如何找出可执行文件所依赖的DLL?

在使用GNU开发工具链(gcc等)的系统上,我使用ldd来查找,但是在像Mac OS X这样的clang系统上(没有ldd),应该怎么查找呢?


你尝试过使用 ldd 吗?操作系统必须能够找出所需的库,因此 clanggcc 基本上要做相同的事情。 - MSalters
@MSalters:macosx没有ldd - sds
1
嗯,显然是 otool -L。我没有表达清楚的一点是编译器并不重要(MacOSX 有一个 gcc 端口)。 - MSalters
@MSalters:请把您的评论转化为答案,这样我就可以接受它并关闭问题。谢谢! - sds
2个回答

12

在Mac OSX上,您需要使用otool -L而不是ldd来查看库依赖关系。这样做无论你使用的编译器是什么都可以。其他操作系统可能会有其他工具,例如,在Windows上,您需要使用Dependency Walker


1
此外,如果需要在 macOS 上检查 Linux 二进制文件,可以使用 MacPorts 中的 greadelfnm 工具:https://unix.stackexchange.com/a/418357/43390,也可参考:https://dev59.com/KVcO5IYBdhLWcg3wpjMz。当尝试对 Linux 可执行文件运行 otool -L 命令时,会出现错误提示“object is not a Mach-O file type.”。 - 0 _

6

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
]

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接