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環境変数を設定するにはどうすればよいですか?
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
のようなファイルは、この目的にはカウントされないことに注意してください。それがない場合は、おそらくこのライブラリ用のディストリビューションの開発パッケージをインストールする必要があります。
LD_LIBRARY_PATHに新しいパスを永続的に追加する別の方法:
.conf
の/etc/ld.so.conf.d/
ファイルを編集します。
アプリケーションをインストールしたことがあり、そのライブラリが別のアプリケーションで認識されませんでした。次に、パス、つまり/usr/local/hdf5/lib
をx86_64-linux-gnu.conf
ファイルに追加します。次の行に入力してください。セーブ。
次にSudo ldconfig
を実行します
動いた。
PS:OS Ubuntu 14.04
~/.profile
やシェルの特定の初期化ファイルで設定できます(bashの場合は~/.bashrc
、zshの場合は~/.zshenv
)。次に、シェルを再起動する必要があります(選択に応じて、ログアウトして再度ログインすることもできます)。
次の方法で設定を確認できます。
env | grep '^LD_LIBRARY_PATH'
編集:LD_LIBRARY_PATH
は、マシンコードを含む共有ライブラリ用で、ファイル名には通常、名前に.so
が含まれ、異なるバージョンを区別するためにピリオドで区切られた数字が続く場合があります。 LD_LIBRARY_PATH
にもかかわらず、ABIの不一致によりライブラリが見つからない可能性があります。言語(PerlやPythonなど)とパッケージには、.so
とは関係のない独自のライブラリシステム(おそらくLD_LIBRARY_PATH
ファイルも含む)がある場合があることにも注意してください。
ライブラリパスエラーがリンカーにある場合、コンパイル時に、ライブラリへのパスを変数$ LD_LIBRARY_PATHに追加する必要があります。ライブラリエラーが実際にコンパイルされたプログラムを実行したときである場合、ライブラリパスを/etc/ld.so.confに追加し、ldconfigを実行してライブラリ検索パスキャッシュを再構築する必要があります。
で解決:
/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