Linuxで環境変数LD_LIBRARY_PATHを設定する方法


212

私は最初にコマンドを実行しました: export LD_LIBRARY_PATH=/usr/local/lib

次に、.bash_profileファイルを開きました:vi ~/.bash_profile。このファイルには、次のように記述します。

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

その後、ターミナルを閉じて再起動した場合、入力echo $LD_LIBRARY_PATHしても結果は表示されません。

パスを永続的に設定する方法は?


9
ここで明白なことを指摘してください...何をしたかを修正したいだけの場合は$、たとえばを追加しますexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH
Cookie

11
ただ実行しsudo ldconfig、その後
Necktwi

これはばかげているかもしれませんが、あなたはしました$ source ~/.bash_profileか?忘れがちです。そして@neckTwiは実行ldconfigを言った後のように
アシュリー

回答:


208

ディストリビューションに関する詳細を追加する必要があります。たとえば、Ubuntuでは、これを行う正しい方法は、カスタム.confファイルをに追加すること/etc/ld.so.conf.dです。たとえば、

sudo gedit /etc/ld.so.conf.d/randomLibs.conf

ファイル内には、システムに追加するすべてのライブラリを含むディレクトリへの完全なパスを書き込む必要があります。次に例を示します。

/home/linux/myLocalLibs

ファイルのフルパスではなく、dirへのパスのみを追加することを忘れないでください。そのパス内のすべてのlibには自動的にインデックスが作成されます。

保存して実行sudo ldconfigし、このライブラリでシステムを更新します。


ディストリビューションについて言及していません。そのFedora 16
singha

このソリューションをFedoraで使用できます。JoachimPileborgによって提案されたソリューションは、このライブラリのビューを1人の特定のユーザーに制限する場合、システム全体のlib touが私のソリューションを使用する場合に役立ちます。それはすべてあなたが探しているものに依存します。
user1824407

11
これは本当に正しい方法ですか?複数のユーザーがローカルライブラリを構築していて、その両方を/etc/ld.so.conf.dに追加したとします。これで、ユーザーAはユーザーBのローカルライブラリにリンクできます。良くない。
ergosys 2013年

/usr/local/lib通常はすでに存在するため、ファイルを編集する必要はありませんsudo ldconfig
nyuszika7h 2014

1
奇妙なことに、みんなでうまくいきましたが、うまくいきませんでしたexport LD_LIBRARY_PATH ....
会計士م ''

105

以前のパスを保持し、上書きしないでください:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/

〜/ .bashrcに追加できます:

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/your/custom/path/' >> ~/.bashrc

36

追加

LD_LIBRARY_PATH = "/ path / you / want1:/ path / you / want / 2"

/etc/environment

Ubuntuのドキュメントを参照してください。

修正:私は自分のアドバイスを参考にして、実際にドキュメントを読む必要があります。これは、LD_LIBRARY_PATHには適用されないと述べています。Ubuntu9.04 Jaunty Jackalope以降、LD_LIBRARY_PATHを$ HOME / .profile、/ etc / profile、または/ etc / environmentファイルに設定することはできません。/etc/ld.so.conf.d/ .conf構成ファイルを使用する必要があります。*したがって、user1824407の答えは適切です。


うわー、私はそのページを何度か見て、見落としました。見つけて注目していただきありがとうございます。
Michael Scheper、2015

4
Ubuntuはここでは特別なケースです。Ubuntuの見解では、すべてのユーザーが同じライブラリーを望んでおり、各ライブラリーには1つの場所しかない(Launchpadバグ#366728の説明を参照)。ただし、マルチユーザーの研究または開発システムでは、各ユーザーが独自のバージョンのライブラリを使用できるようにする必要があります。ほとんどのLinuxディストリビューションではこれを許可しており、長年にわたってそうしています。
Joachim Wagner

9
PATHとPKG_CONFIG_PATHを設定できるが、LD_LIBRARY_PATHは設定できない理由を理解するために4時間を費やしました。私もできません。
ミハイルチェシュコフ2015

@JoachimWagnerはい、これは正しいです。condaやbioconda、virtenvが、特別な環境変数を使用して特定のプログラムを呼び出す際に推奨される方法になっているのはなぜですか。ケースに入れられた環境を使用することにより、LD_LIBRARYパスを誤って設定しても、システムの問題や問題が発生しません。
Andor Kiss

23

このファイル.bash_profileは、ログインシェルによってのみ実行されます。に入れる~/.bashrcか、単にログアウトして再度ログインする必要がある場合があります。


ヨアヒム・ピレボルに感謝します。システムを再起動しましたが、そのパスは永続的に設定されています。
singha 2012年

21

あるいは、指定したライブラリdirを使用してプログラムを実行できます。

/lib/ld-linux.so.2 --library-path PATH EXECUTABLE

詳細はこちら


2
私も助けてくれた
spt025

17

何らかの理由で、編集後にbashrcを再ソースする必要があるという事実について誰も言及していません。(上記のように)ログアウトして再度ログインすることもできますが、次のコマンドを使用することもできます:source ~/.bashrcまたは. ~/.bashrc


14

置く export LD_LIBRARY_PATH=/usr/local/lib~/.bashrc[好ましく間のいずれかの上書きを避けるために、スクリプトの終わりに向かって、デフォルトでは~/.bashrc、多くが付属していますif-else文]

新しいターミナル/コンソールを開くたびLD_LIBRARY_PATHに反映されることを投稿する


ディストリビューションについて言及していません。そのFedora 16
singha

7
  1. ホームフォルダーに移動し、.profileを編集します
  2. 最後に次の行を配置します

    export LD_LIBRARY_PATH=<your path>

  3. 保存して終了。

  4. このコマンドを実行する

    sudo ldconfig


3

Mint 15から17で以下を実行します。ubuntuサーバー12.04以降でも動作します。

sudo vi /etc/bash.bashrc 

一番下までスクロールして、次を追加します。

export LD_LIBRARY_PATH=.

すべてのユーザーに環境変数が追加されています。


3

あなたが言う、カスタムスクリプトを追加してみてください可能性 myenv_vars.shの中で/etc/profile.d

cd /etc/profile.d
sudo touch myenv_vars.sh
sudo gedit myenv_vars.sh

これを空のファイルに追加して保存します。

export LD_LIBRARY_PATH=/usr/local/lib

ログアウトとログインはLD_LIBRARY_PATH永続的に設定されます。


1
素晴らしい答え。システムの初期化中に毎回パスをエクスポートし、物理的に/ etc / bashrcを編集するよりもはるかに安全なパスをエクスポートするための最良の選択
Joseph
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.