首页 > 解决方案 > 从 otool 报告的依赖路径不是加载器找到依赖的路径

问题描述

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

在 linux 上,当我运行时,ldd <path/to/executable>我得到了一个很好的共享库依赖项列表,并且路径是动态链接器找到了这些依赖项(或一条消息表明未找到依赖项)。

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

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

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

otool信息:

➜  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

标签: macoslddotool

解决方案


推荐阅读