20

我很难理解@loader_path文件中 a 所指的绝对路径。

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 文档

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

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

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

4

1 回答 1

6

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

于 2013-05-30T05:44:46.657 回答