@loader_path解决了什么路径?

时间:2013-05-30 02:16:32

标签: macos shared-libraries mach-o dyld otool

我很难理解文件中@loader_path引用的绝对路径。

user@local:~$ otool -L zlib.so 
zlib.so:
    @loader_path/../../libz.1.dylib (compatibility version 1.0.0, current version 1.2.7)
    /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)

我想知道系统在哪里找到libz.1.dylib。

来自某些Mac documentation

  

@ loader_path /                 此变量将替换为包含mach-o二进制文件的目录的路径,该二进制文件包含使用@loader_path的load命令。因此,在每个二进制文件中,@ download_path解析为不同的路径

我猜想这意味着@loader_path只是目标文件(zlib.so)的路径,但这似乎不是真的。

是否有任何命令行实用程序可以将@loader_path解析为尝试打开库时使用的实际路径?

1 个答案:

答案 0 :(得分:4)

你的猜测是正确的:在这种情况下,@ loader_path是目录的路径,包含zlib.so.但是使用这个lib可能会有问题。你从哪里得到那个lib?如果您自己构建它,请参阅this question以获取一些信息。
@loader_path对框架和插件很有用,但对于独立库则不行。