2

私はFedoraLinuxボックスに取り組んでいます。

ホームディレクトリの下にローカルにインストールしたバイナリとライブラリのホストがあります。

システムをセットアップしたいので、そこにソフトウェアをインストールすると、rootユーザーがプレフィックスなしでインストールした場合と同じように機能します(私にとっては)。

PATH変数にそのディレクトリを追加することで〜/ local / binにインストールされたバイナリを問題なく実行できますが、〜/ local / libおよび〜/ local / lib64のライブラリにリンクするのはどうですか?

LD_LIBRARY_PATH変数に似たものがありますが、実行時ではなくコンパイル時にライブラリを検索しますか?L〜/ local/libまたは./configureスクリプトのフラグを介してコンパイラにパスを明示的に渡すことについて心配したくありません。

4

3 に答える 3

1

ライブラリを実行時に機能させるには、次の2つの方法があります。

  1. ライブラリがあなただけの用途であり、マルチユーザーシステムではない場合は、$LD_LIBRARY_PATH環境変数を使用してください

  2. /etc/ld.so.confシステム上の唯一のユーザーである場合は、ディレクトリを、またはの新しいテキストファイルに追加できます/etc/ld.so.conf.dldconfigその後実行して、システムの共有ライブラリキャッシュを再構築します

コンパイル時の状況はそれほど明確ではありません。GNUリンカは、ライブラリパスを指定するための-rpathパラメータと環境変数をサポートしています。$LD_RUN_PATHただし、いずれの場合も、結果パスはバイナリにハードコードされているため、後でファイルを移動する場合は、ファイルを再コンパイルする必要があります。

スタイルスクリプトを使用して構築されたプログラム./configureは、にあるライブラリを見つけることができるはずですが$LD_RUN_PATH、それをテストすることはできていません。

いずれの場合も、実行すると、インクルードディレクトリとライブラリの両方を解決./configure --prefix=${HOME}/localできるはずです。configure

于 2008-11-04T07:35:16.827 に答える
1

LIBRARY_PATH環境変数を に設定します$HOME/local/lib:$HOME/local/lib64。また、環境変数C_INCLUDE_PATHを設定してCPLUS_INCLUDE_PATH$HOME/local/include. これらは GCC がライブラリを検索してファイルをインクルードするために使用する環境変数であるため、おそらく他のコンパイラでは機能しません。

于 2008-11-04T06:13:44.087 に答える
0

LD_LIBRARY_PATH を設定するだけでなく、/etc/ld.so.conf を確認することもできます (これは、root を含むすべてのユーザーに対して機能します)。/etc/ld.so.conf を使用する場合は、システムのセキュリティも考慮してください。人々があなたのディレクトリからライブラリを実行する場合、彼らはあなたが自分たちをいじらないことを信頼しています。

于 2008-11-04T07:22:24.293 に答える