1

マシン A で CMake を使用してコンパイルしたプログラムがありますが、それを古いマシン B で実行したいと考えています。そうすると、次のようになります。

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./program)
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./program)
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./program)

この質問を見たことがありますが、私の問題を解決する最善の方法は、新しいバージョンをマシン B にコピーすることだと思います/usr/lib/libstdc++.so.6libstdc++.so.6.0.14~/lib

export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH

その後。プログラムを開始すると、次のようになります

Floating point exception

機能させるにはどうすればよいですか?

4

1 に答える 1

0

あなたが発見したように、あなたlibstdc++.so.6は古いシステムに新しいものを存在させ、それを見つける方法をダイナミックリンカに教える必要があります。

ダイナミックリンクライブラリが確実に見つかるようにするにはどうすればよいですか?を参照してください。いくつかのオプションを使用して、ライブラリが確実に検出されるようにする方法の詳細については、libstdc++FAQおよびマニュアルの動的ライブラリまたは共有ライブラリの検索を参照してください。LD_LIBRARY_PATHはオプションの1つにすぎません。

浮動小数点例外はlibstdc++に関連するべきではありません。デバッガーを使用して、それがどこから来ているのかを見つけ、詳細を取得する必要があります。

于 2012-10-17T19:27:03.933 に答える