少し前に、C++11 のいくつかの機能を早期に開始するために、GCC 4.8 にアップグレードすることにしました。しかし、私は少し脱線してしまい、数日前のプロジェクトまで、新しい機能を実際に使用することはありませんでした (新しいコンパイラは問題なく動作しているように見えましたが、それは単に私が使用していなかったからかもしれません)新しい機能。)
この新しいプロジェクトでは、=std=c++11 フラグを付けてコンパイルしたとき、問題はありませんでした。ただし、実行時にエラーが発生します。
./main: /usr/lib/i386-linux-gnu/libstdc++.so.6: version
GLIBCXX_3.4.18' が見つかりません (./main で必要)`
GCC 4.8 に関連するより最新の libstdc++ ライブラリへのリンクに問題があると思いますが、これを修正する方法や適切なライブラリがどこにあるべきかは一生わかりません。g++ および gcc バイナリを gcc-4.8 にシンボリックにリンクしたことを覚えていg++ -v
ます。
Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/app/gcc/4.8.0/libexec/gcc/i686-pc-linux-gnu/4.8.0/lto-wrapper Target: i686-pc-linux-gnu Configured with: ./gcc-4.8.0/configure --prefix=/app/gcc/4.8.0 Thread model: posix gcc version 4.8.0 (GCC)
オンラインの別のスレッドでldd
、プログラムの出力を見るようになりました。リンクされている libstdc++ ライブラリのディレクトリ構造が、バイナリのディレクトリ構造とは異なることがわかりました。ただし、後者で適切なライブラリを見つけることができなかったので、libstdc++
どこを見ればよいかわかりません。の出力ldd main
は次のとおりです。
./main: /usr/lib/i386-linux-gnu/libstdc++.so.6: version
GLIBCXX_3.4.18' が見つかりません (./main で必要) linux-gate.so.1 => (0xb7791000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb768e000) ) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7662000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7644000) libc .so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb749b000) /lib/ld-linux.so.2 (0xb7792000)`
これがどこでうまくいかないのか正確にはわかりません。グーグルを続けて答えを探しますが、皆さんが提供できる助けがあれば大歓迎です. 問題について不明な点がある場合、または情報を忘れた場合はお知らせください。追加してみます。どうもありがとうございました。