web-dev-qa-db-ja.com

LD_LIBRARY_PATHはどこにありますか? LD_LIBRARY_PATH環境変数を設定するにはどうすればよいですか?

Unixを使用してc ++プログラムを構築しようとしています。

エラーが発生しました

Linking CXX executable ../../bin/ME
/usr/bin/ld: cannot find -lboost_regex-mt

Libboost *の場所をLD_LIBRARY_PATH環境変数に設定し、最初に入力したようにmakeを呼び出すだけでよいと聞きました。

-L /usr/lib64 -l boost_regex-mt

または

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64

しかし、LD_LIBRARY_PATHはどこにありますか? LD_LIBRARY_PATH環境変数を設定するにはどうすればよいですか?

29
csx

lD_LIBRARY_PATH環境変数を設定するにはどうすればよいですか?

あなたはこれをしたときにあなたはすでにそれを設定しました:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64

しかし、それはあなたの問題を解決しません。 $LD_LIBRARY_PATHは実行時に参照され、動的にリンク可能なライブラリを検索する追加のディレクトリのリストを提供します。リンク時には参照されません(ビルドされたツール自体が必要とするライブラリを見つける場合を除いて!)。

ビルド時にライブラリを見つける場所をリンカーに指示するには、-Lリンカーオプションを使用する必要があります。あなたもすでにそれをしました:

-L /usr/lib64

それでもエラーが発生する場合は、ライブラリが実際に存在することを確認する必要があります。その(または任意の)ディレクトリにファイルlibboost_regex-mt.soまたはlibboost_regex-mt.aがありますか? libboost_regex-mt.so.othersuffixのようなファイルは、この目的にはカウントされないことに注意してください。それがない場合は、おそらくこのライブラリ用のディストリビューションの開発パッケージをインストールする必要があります。

29
Celada

LD_LIBRARY_PATHに新しいパスを永続的に追加する別の方法:

.conf/etc/ld.so.conf.d/ファイルを編集します。

アプリケーションをインストールしたことがあり、そのライブラリが別のアプリケーションで認識されませんでした。次に、パス、つまり/usr/local/hdf5/libx86_64-linux-gnu.confファイルに追加します。次の行に入力してください。セーブ。

次にSudo ldconfigを実行します

動いた。

PS:OS Ubuntu 14.04

15
iparjono

~/.profileやシェルの特定の初期化ファイルで設定できます(bashの場合は~/.bashrc、zshの場合は~/.zshenv)。次に、シェルを再起動する必要があります(選択に応じて、ログアウトして再度ログインすることもできます)。

次の方法で設定を確認できます。

env | grep '^LD_LIBRARY_PATH'

編集:LD_LIBRARY_PATHは、マシンコードを含む共有ライブラリ用で、ファイル名には通常、名前に.soが含まれ、異なるバージョンを区別するためにピリオドで区切られた数字が続く場合があります。 LD_LIBRARY_PATHにもかかわらず、ABIの不一致によりライブラリが見つからない可能性があります。言語(PerlやPythonなど)とパッケージには、.soとは関係のない独自のライブラリシステム(おそらくLD_LIBRARY_PATHファイルも含む)がある場合があることにも注意してください。

4
vinc17

ライブラリパスエラーがリンカーにある場合、コンパイル時に、ライブラリへのパスを変数$ LD_LIBRARY_PATHに追加する必要があります。ライブラリエラーが実際にコンパイルされたプログラムを実行したときである場合、ライブラリパスを/etc/ld.so.confに追加し、ldconfigを実行してライブラリ検索パスキャッシュを再構築する必要があります。

3
Gary

で解決:

/etc/systemd/system/pm2-node.serviceに追加

Environment=PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/app/nodejs/local/nvm/versions/node/v7.8.0/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/node/.pm2
Environment=LD_LIBRARY_PATH=/opt/Oracle/instantclient_12_2
Environment=OCI_LIB_DIR=/opt/Oracle/instantclient_12_2
1
Dave