macos - 从 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
解决方案
推荐阅读
- node.js - 在应用程序的客户端/服务器端存储 JWT/授权 [JavaScript]
- matomo - 将分析数据从 Piwik 导入到新服务器上的 Matomo
- python - ipyvuetify:如何限制 TextField 的宽度
- reactjs - 如何从 API 显示数组的数据?
- c++ - 在 C++ 中为用户定义的类型专门化 std::minus 是否合法?
- python - 从 Motionbuilder 到 Maya 的动画传输
- swiftui - SwiftUI 2,s Mapkit MKPointOfInterestFilter
- python - 如何使用 pymysql 将日志上传到 mysql
- c# - 变换位置不改变游戏对象位置
- python - 如何在 python 中使用 youtube_dl 和 ffmpeg 剪掉前 5 秒