2017-01-08 3 views
0

トランク版のgccをコンパイルしましたが、g ++を使用してC++プロジェクトをコンパイルすると、そこにある標準ライブラリコンポーネント(std::conjunctionなど)が見つかりません。私のローカルリポジトリ(gcc_trunk/libstdc++-v3/include/std)のコードをチェックすると、すべてがそこにあるように見えます。 libstdc++の正しいバージョンを使用していることを確認するにはどうすればよいですか? |正しいlibstdC++の使い方は?

以下は、私が彼らのそれぞれの出力

$ readelfが-d /usr/lib64/libstdc++.so.6でシステムをチェックするために使用しましたいくつかのコマンドですグレップのSONAME

0x000000000000000e (SONAME)    Library soname: [libstdc++.so.6] 

$のls -l /usr/lib/libstdc++.so.6

lrwxrwxrwx 1 root root 19 Jan 7 13:19 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.23 

任意の考え?

+0

セットLD_LIBRARY_PATH – stark

答えて

0

新しい標準GCCをいくつかの非標準の場所(つまり、/usrにはない)にインストールしたと仮定します。したがって、実行時に互換性のないホスト/usr/lib/libstdc++.soを使用しようとします。あなたが行うことができます。この問題を解決するために

  • のいずれかは、静的に(これは部分的である-static-libstdc++経由libstdc++とリンク-Wl,-rpath
  • を使用してアプリケーションをリンクする新しいGCCのライブラリフォルダへ
  • を指すようにLD_LIBRARY_PATHセットでアプリケーションを実行します他のコンパイラLIBS例えばlibgcc.soはまだホストGCCから来る)
+0

として溶液しかし、私はコンパイル時のエラーを持っている、これはランタイムエラー(例えば、 'conjunction'することはできませんは標準のメンバーではありません) –

+0

あなたの質問に詳細を記入することをお勧めします。例えば。 atmは、それがランタイムかコンパイル時エラーかどうかは不明です... – yugr

関連する問題