web-dev-qa-db-ja.com

@loader_pathはどのパスに解決されますか?

ファイル内の@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ドキュメント

@ loader_path /この変数は、@ loader_pathを使用したloadコマンドを含むmach-oバイナリを含むディレクトリへのパスに置き換えられます。したがって、すべてのバイナリで、@ loader_pathは異なるパスに解決されます

これは、@ loader_pathがオブジェクトファイル(zlib.so)への単なるパスであることを意味していると思いますが、そうではないようです。

ライブラリを開こうとしたときに使用される実際のパスに@loader_pathを解決するコマンドラインユーティリティはありますか?

17
ChrisB

あなたの推測は正しいです:この場合、@ loader_pathはzlib.soを含むディレクトリへのパスです。しかし、おそらくこのライブラリの使用には問題があります。そのlibはどこで入手しましたか?自分で作成する場合は、 この質問 を参照してください。
@ loader_pathはフレームワークとプラグインには役立ちますが、スタンドアロンライブラリには役立ちません。

6
cody