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