バージョン `CXXABI_1.3.8' が見つかりません(...で必要)。

コンパイル後にプログラムを実行すると、次のようなエラーが発生します。

./prog:/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8' not found (required by ./prog) .prog:./prog: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: バージョンGLIBCXX_3.4.19' 見つかりません(./progで必要です) .prog:/usr/lib/x86_64-linux-gnu/libstdc++.so.6: バージョン `GLIBCXX_3.4.20' 見つかりません(/home/arman/lib/boost_1_55_0/stage/libboost_serialization.so.1.55.0で必要)。

boost 1.55.0とgcc 4.9.0の両方がそれぞれ~/lib/boost_1_55_0~/lib/gcc-4.9.0にインストールされているので、このために問題が発生しているのだと思いますが、どのようにして解決したらよいのかわかりません。

私の ~/.profile には以下の行が含まれています。

export LD_LIBRARY_PATH=/home/user/lib/boost_1_55_0/stage/lib:$LD_LIBRARY_PATH

ソリューション

GCC 4.9では、システムのlibstdc++よりも新しいC++ ABIバージョンが導入されているので、LD_LIBRARY_PATHにパスを追加して、ローダにこの新しいバージョンのライブラリを使用するように指示する必要があります。残念ながら、GCC 4.9をインストールした際のlibstdc++がどこにあるかは、GCCの設定方法に依存するため、すぐにはわかりません。ですから、次のようなスタイルのものが必要です。

export LD_LIBRARY_PATH=/home/user/lib/gcc-4.9.0/lib:/home/user/lib/boost_1_55_0/stage/lib:$LD_LIBRARY_PATH

実際のパスは異なるかもしれないことに注意してください (その下に `x86_64-unknown-linux-gnu/4.9.0´ のようなサブディレクトリが隠されているかもしれません)。

解説 (2)