web-dev-qa-db-ja.com

Mac OS XでDYLD_LIBRARY_PATHをどこに設定すればよいですか。

X ++で記述したコードで使用するために、C++で記述したソルバーをMac(OS X)にインストールしようとしています。

ソルバーのドキュメントはこれを言います:

必ず「。」を付けてください。あなたのDYLD_LIBRARY_PATH のために

  • 既製の実行可能ファイルを実行する
  • libamg.dylib(およびgfortran RTSlibs)とリンクする

これの意味がよくわかりません。どこを変更する必要がありますか?

私はいくつかのグーグルを行いましたが、私のような初心者のために十分簡単なものに出くわしていません!私をオンラインリソースに誘導したり、環境変数を設定する方法と場所のa-b-csを私に与えても構わないと思っている患者がいる場合、私は非常に感謝します。

29
Ant

これは環境変数であるため、通常はターミナルで次のように設定されます。

_export DYLD_LIBRARY_PATH=someValue
_

_man dyld_さんのコメント:

_DYLD_LIBRARY_PATH_

これは、ライブラリーを含むディレクトリーのコロンで区切られたリストです。動的リンカーは、ライブラリーのデフォルトの場所を検索する前に、これらのディレクトリーを検索します。既存のライブラリの新しいバージョンをテストできます。

プログラムが使用するライブラリごとに、ダイナミックリンカーは_DYLD_LIBRARY_PATH_の各ディレクトリでライブラリを順番に検索します。それでもライブラリが見つからない場合は、_DYLD_FALLBACK_FRAMEWORK_PATH_と_DYLD_FALLBACK_LIBRARY_PATH_を順に検索します。

_-L_オプションをotool(1)に使用します。実行可能ファイルがリンクされているフレームワークと共有ライブラリを発見する。


あなたはおそらく次のようなものが欲しいでしょう

_export DYLD_LIBRARY_PATH=.:$DYLD_LIBRARY_PATH
_

検索された場所のリストの前に_._(現在のディレクトリ)を追加します。私の未変更のOS Xでは、_DYLD_LIBRARY_PATH_には現在の値がありません。

_$ echo $DYLD_LIBRARY_PATH

$
_

プログラムの実行方法に応じて、これを別の方法で設定する必要があります。 Xcode(どこにあるかはわかりません)。

21
Daniel Beck

システムにexport DYLD_LIBRARY_PATHを設定しないでください。

共有ライブラリのパスは、otool -Lおよびinstall_name_toolを使用して修正できます。

たとえば、Perl DBD-MySQLをコンパイルした場合、リンカーはMySQLをインストールした場所を知らないため、Perl DBD-MySQLを使用できません。

># make
....


># otool -L blib/Arch/auto/DBD/mysql/mysql.bundle

blib/Arch/auto/DBD/mysql/mysql.bundle:
        libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)


#> install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib blib/Arch/auto/DBD/mysql/mysql.bundle


># otool -L blib/Arch/auto/DBD/mysql/mysql.bundle

blib/Arch/auto/DBD/mysql/mysql.bundle:
        /usr/local/mysql/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)



#> make test
...
Result: PASS

#> make install

これはそれと同じくらい簡単です。

21
TVNshack

Xcode 4では、これをプロジェクトスキームに追加して、次のようなエラーを回避できます。

dyld: Library not loaded: @loader_path/libLeap.dylib
  Referenced from: /Users/paulsolt/Library/Developer/Xcode/DerivedData/LeapTest-eqcxmzewheyjusgrcszyvlcxlgna/Build/Products/Debug/LeapTest
  Reason: image not found
  1. メニューで、[製品]-> [スキームの編集]-> [引数]タブ-> [環境変数]の追加->キー:DYLD_LIBRARY_PATH値:/ Users/MyUserAccount/path/to/libをクリックします。

  2. ユーザーアカウントへのパスとライブラリフォルダーへの完全パスを変更します。

  3. ビルドして実行できるはずです。

Setting DYLD_LIBRARY_PATH in Xcode 4

7
Paul Solt