41

Xcode 4の最新バージョンを使用してCocoaアプリケーションを開発していますが、ダイナミックライブラリをプロジェクトにリンクしたいと思います(dylibs)。

プロジェクトにライブラリを追加するだけでは十分ではないことをどこかで読みました。実行install_name_toolotoolて、プロジェクトにバンドルされているライブラリをプロジェクトで使用する必要があるためです。

のマニュアルページを読みましたがinstall_name_tool、なぜこれを行う必要があるのか​​わかりません。

ライブラリはどのように機能しますか?/usr/local/lib/mylibrary.dylib実行中のように、アプリケーションとライブラリが私のマシンの特定の場所を指すパスを持っている部分に特に興味がありますotool -L

4

2 に答える 2

68

Appleには、共有ライブラリを見つける方法がいくつかあります。

  1. @executable_path:メインの実行可能ファイルに関連
  2. @loader_path :参照するバイナリとの相対
  3. @rpath:パスのリストのいずれかに関連します。

@rpathOSX10.5で導入された最新の追加です。

たとえば、実行可能ファイルContents/MacOSとライブラリをに入れたい場合Contents/Librariesは、次のようにすることができます。

install_name_tool -id @rpath/Libraries/lib_this.dylib   builddir/lib_this.dylib

最上位の実行可能ファイルセットrpathには、次のものが含まれます。

install_name_tool -add_rpath @loader_path/..  myexecutable

と:

install_name_tool -change builddir/lib_this.dylib @rpath/Libraries/lib_this.dylib myexecutable

注:後の最初のパス-changeは、現在バイナリにあるものと正確に一致する必要があることに注意してください。

迷子になった場合otool -l -v myexecutableは、現在実行可能ファイルに正確に含まれているロードコマンドを教えてくれます。

詳細についてはman dyld、およびman install_name_toolを参照してください。

于 2012-02-13T16:05:30.830 に答える
12

すべての依存ライブラリを公開するMacDependencyという名前のGUIツールもあります(https://github.com/kwin/macdependency/)。

于 2015-07-25T17:40:15.583 に答える