0

これは、PATH、LD_LIBRARY_PATH、LIBRARY_PATH など、中央に配置されたパス仕様に関する質問です。

ローダーの共有ライブラリ パスを指定する方法は 2 つあります。それらを LD_LIBRARY_PATH に追加するか、ファイルを /etc/ld.so.conf.d/ に追加します。また、後者がより現代的で好ましい方法であると考えられていることも知っています。

また、LIBRARY_PATH を編集することで、リンカーの標準ライブラリ パスを指定できることも知っています。これはまだ「現代的な」方法ですか、それとも私が使用すべき「ld.so.conf.d-style」の代替手段がありますか?

編集:人々は「なぜ」と尋ねているので:

実行時に CUDA および C++ コードを動的に生成およびコンパイルする Python パッケージ (Theano) を使用しています。リンク先のライブラリの 1 つは、NVidia の cuDNN です。Theano の開発者が動的ライブラリではなく静的ライブラリにリンクしている理由がわかりません。

4

2 に答える 2

2

ld.so.conf.d/静的ライブラリに相当するものはありません。環境変数を介して標準のリンカー検索パスを指定し、LIBRARY_PATHコマンドライン フラグを介してリンカーへの追加パスを指定するだけです。

明確にするために:

  • LIBRARY_PATH: コンパイル時にリンカーによって使用されます。静的ライブラリと動的ライブラリの両方を検索するためにリンカーによって使用されます。
  • LD_LIBRARY_PATH: ローダーが実行時に動的ライブラリを検索するために使用します。
于 2015-03-19T19:45:13.510 に答える
0

静的ライブラリは (静的) リンク時に解決され、定義上、実行時の側面はありません。

私の意見では、静的ライブラリの使用を避け、常に共有ライブラリを優先する必要があります。

于 2015-03-19T19:48:30.050 に答える