我很难理解文件中@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解析为尝试打开库时使用的实际路径?
答案 0 :(得分:4)
你的猜测是正确的:在这种情况下,@ loader_path是目录的路径,包含zlib.so.但是使用这个lib可能会有问题。你从哪里得到那个lib?如果您自己构建它,请参阅this question以获取一些信息。
@loader_path对框架和插件很有用,但对于独立库则不行。