
Unix を使用して C++ プログラムを構築しようとしています。
エラーが発生しました
Linking CXX executable ../../bin/ME
/usr/bin/ld: cannot find -lboost_regex-mt
LD_LIBRARY_PATH環境変数にlibboost*の場所を設定し、最初にやったように次のように入力してmakeを起動するだけでよいと聞きました。
-L /usr/lib64 -l boost_regex-mt
または
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64
しかし、LD_LIBRARY_PATH はどこにありますか? LD_LIBRARY_PATH 環境変数をどのように設定すればよいですか?
答え1
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
この目的にはカウントされないことに注意してください。それがない場合は、このライブラリ用のディストリビューションの開発パッケージをインストールする必要がある可能性があります。
答え2
LD_LIBRARY_PATH に新しいパスを永続的に追加する別の方法:
.conf
のファイルを編集します/etc/ld.so.conf.d/
。
アプリケーションをインストールしたことがあるのですが、そのライブラリが別のアプリケーションで認識されませんでした。その場合は、パス (つまり/usr/local/hdf5/lib
、 ) をファイルに追加しますx86_64-linux-gnu.conf
。次の行に入力するだけです。保存します。
そして実行するsudo ldconfig
出来た。
追記: OS Ubuntu 14.04
答え3
~/.profile
シェルの init ファイル (例: ~/.bashrc
bash、 zsh)で設定できます~/.zshenv
。その後、シェルを再起動する必要があります (選択に応じて、ログアウトして再度ログインする必要があります)。
設定を確認するには、次の手順に従ってください。
env | grep '^LD_LIBRARY_PATH'
編集:LD_LIBRARY_PATH
はマシン コードを含む共有ライブラリ用で、そのファイル.so
名には通常 が含まれ、異なるバージョンを区別するためにピリオドで区切られた数字が続く場合があります。 にもかかわらずLD_LIBRARY_PATH
、ABI の不一致のためにライブラリが見つからない可能性があります。言語 (Perl や Python など) やパッケージには、 とは関係のない独自のライブラリ システム (.so
ファイルも含まれる可能性があります) がある場合があることにも注意してくださいLD_LIBRARY_PATH
。
答え4
解決方法:
追加する/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