ライブラリのパスを LD_LIBRARY_PATH
に追加します 環境変数
TL;DR
GCC では、適切なバージョンが見つからない場合、ライブラリの場所を手動で指定する必要があります。これは、いくつかの方法で実行できます。 1 つは LD_LIBRARY_PATH
に追加することです .
export LD_LIBRARY_PATH="/usr/local/lib64/:$LD_LIBRARY_PATH"
一部のライブラリ パスは /usr/local/lib64/
になります。 .他の人がライブラリ パス /usr/lib/x86_64-linux-gnu/
を報告しています
ライブラリを LD_LIBRARY_PATH
に追加する必要があるのはなぜですか ?
GCC をコンパイルしてインストールすると、これらのディレクトリのいずれかにライブラリが配置されますが、それだけです。 libstdc++
の FAQ によると 、私たちが得たエラーは、ダイナミックリンカーが間違ったバージョンの libstdc++
を見つけたことを意味します 共有ライブラリ。リンカは正しいバージョンを見つけられないため、libstdc++
の場所をリンカに伝える必要があります。
これを修正する最も簡単な方法は、リンカーが共有ライブラリを検索するディレクトリのコロンで区切られたリストである LD_LIBRARY_PATH 環境変数を使用することです。
この問題を解決する方法は他にもあります。 gcc
をインストールすると、これと簡単に説明されている他の解決策を見つけることができます make の出力を読んだ場合:
ライブラリは次の場所にインストールされています:
/usr/local/lib/../lib32
あるディレクトリ LIBDIR にインストールされたライブラリに対してリンクしたい場合は、libtool を使用してライブラリのフル パス名を指定するか、リンク中に `-LLIBDIR' フラグを使用して少なくとも 1 つの以下:
- 実行時に LIBDIR を環境変数 LD_LIBRARY_PATH に追加
- リンク時に LIBDIR を環境変数 `LD_RUN_PATH' に追加
- 「-Wl,-rpath -Wl,LIBDIR」リンカー フラグを使用する
- システム管理者に LIBDIR を `/etc/ld.so.conf' に追加してもらいます
詳細については、ld(1) や ld.so(8) のマニュアル ページなど、共有ライブラリに関するオペレーティング システムのドキュメントを参照してください。
うーん、それは簡単でした!また、「インストール済みのライブラリにリンクしたくなったら」本気ですか?
TopTracker をインストールしようとしたときに、Ubuntu 14.04 でも同じ問題が発生しました。次のようなエラーが発生しました:
<ブロック引用>/usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:バージョン 'CXXABI_1.3.8' が見つかりません (/usr/share/toptracker/bin/TopTracker で必要)/ usr/share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:バージョン 'GLIBCXX_3.4.21' が見つかりません (/usr/share/toptracker/bin/TopTracker で必要)/usr /share/toptracker/bin/TopTracker:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:バージョン 'CXXABI_1.3.9' が見つかりません (/usr/share/toptracker/bin/TopTracker で必要)
しかし、その後、gcc 4.9 バージョンをインストールしたところ、問題は解決しました:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9 g++-4.9