@loader_path解决了什么路径?

Chr*_*isB 15 macos mach-o shared-libraries otool dyld

我很难理解文件中的绝对路径@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)
Run Code Online (Sandbox Code Playgroud)

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

从一些Mac文档:

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

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

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

cod*_*ody 6

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