来自otool的报告依赖性路径不是加载程序在其中找到依赖性的路径

时间:2018-08-10 14:04:56

标签: macos ldd otool

希望这不是重复的(我发现了一堆类似的问题,但不完全是我要问的问题)。

在Linux上,当我运行ldd <path/to/executable>时,会得到一个很好的共享库依赖关系列表,并且路径是那些由动态链接程序找到的依赖关系(或一条未找到依赖关系的消息)。

在Mac上使用otool -L <path/to/executable>时,我得到了依赖关系,并且路径相对于rpath,即使该依赖关系不存在。本质上,它报告的是依赖关系应相对于rpath的位置,而不是动态链接程序发现的位置。据我了解,otool直接从二进制文件读取此信息,而不是像ldd这样调用链接器。

我知道我可以通过将DYLD_PRINT_LIBRARIES变量设置为1来运行可执行文件来获取这些路径,但这不适用于动态库,甚至对于可执行文件也不方便。

所以我的问题是,我能否获得与Mac中的ldd完全相同的行为?

工具信息:

➜  otool --version
llvm-otool(1): Apple Inc. version cctools-906
Apple LLVM version 9.1.0 (clang-902.0.39.1)
  Optimized build.
  Default target: x86_64-apple-darwin17.5.0
  Host CPU: ivybridge

0 个答案:

没有答案