GCC 9 ビルドエラー: 'GLIBCXX_3.4.30' バージョンが見つかりません。

GCC 9 ビルドエラー: 'GLIBCXX_3.4.30' バージョンが見つかりません。

私はDebianリポジトリで利用可能なgcc-12を使ってDebian Bookworm(12)にGCC 9.5をインストールしようとしました。make見つからないため、ビルドに失敗しましたGLIBCXX_3.4.30。ログの関連部分makeは次のとおりです。

Making all in po
make[5]: Entering directory '/home/apps/builds/gcc/gcc-9/build/x86_64-pc-linux-gnu/libstdc++-v3/po'                                    
msgfmt -o de.mo ../../../../gcc-releases-gcc-9.5.0/libstdc++-v3/po/de.po                                                               
msgfmt -o fr.mo ../../../../gcc-releases-gcc-9.5.0/libstdc++-v3/po/fr.po
msgfmt: /home/apps/builds/gcc/gcc-9/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6: version `GLIBCXX_3.4.30' not found
 (required by /lib/x86_64-linux-gnu/libicuuc.so.72)                
make[5]: *** [Makefile:550: de.mo] Error 1                         
make[5]: *** Waiting for unfinished jobs....                       
msgfmt: /home/apps/builds/gcc/gcc-9/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6: version `GLIBCXX_3.4.30' not found
 (required by /lib/x86_64-linux-gnu/libicuuc.so.72)                
make[5]: *** [Makefile:550: fr.mo] Error 1
make[5]: Leaving directory '/home/apps/builds/gcc/gcc-9/build/x86_64-pc-linux-gnu/libstdc++-v3/po'
make[4]: *** [Makefile:562: all-recursive] Error 1
make[4]: Leaving directory '/home/apps/builds/gcc/gcc-9/build/x86_64-pc-linux-gnu/libstdc++-v3'
make[3]: *** [Makefile:487: all] Error 2
make[3]: Leaving directory '/home/apps/builds/gcc/gcc-9/build/x86_64-pc-linux-gnu/libstdc++-v3'
make[2]: *** [Makefile:19557: all-stage1-target-libstdc++-v3] Error 2
make[2]: Leaving directory '/home/apps/builds/gcc/gcc-9/build'
make[1]: *** [Makefile:27270: stage1-bubble] Error 2
make[1]: Leaving directory '/home/apps/builds/gcc/gcc-9/build'
make: *** [Makefile:1002: all] Error 2

次の設定オプションを使用しました。

configure --prefix=path-to-install-dir --disable-multilib --enable-languages=c,c++,fortran --enable-checking --program-suffix=9.5

私は私が経験しているエラーを本当に理解していません。興味深いことに、同じシステムのソースからGCC 12を正常にコンパイルできます。/home/apps/builds/gcc/gcc-9/gcc-releases-gcc-9.5.gccでビルドすると、GCCソースコードがそこにあります/home/apps/builds/gcc/gcc-9/buildGLIBCXXinの最新バージョン/home/apps/builds/gcc/gcc-9/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6は次のとおりです。GLIBCXX_3.4.28

ベストアンサー1

ここでの問題は、ビルドが最新バージョンに依存するシステムライブラリに依存することになりますが、それlibstdc++.so.6自体は古いバージョンをビルドすることですlibstdc++.so.6。後者は前者より優先的に使用される。msgfmtこれは(あなたの例では失敗するものです)のようなサードパーティ製のツールを実行しても同じです。

したがって、厳密に言うと、問題はビルドに使用されたコンパイラではなく、新しいコンパイラの依存関係を構築するために使用されたライブラリです...ビルドをスキップすることでこの問題を解決できますlibstdc++。オプション--disable-libstdcxxに追加してください。configureこれにより構成が機能するようになりましたが、特に確認するためにビルドを実行しませんでした。 「欠落」が原因で問題が発生したのか、このシステムが代わりに使用されるのかはconfigureわかりません。libstdc++libstdc++

ご利用いただくとさらに便利になりますパッケージgcc-9が不安定です- 正しく構築されたすべてのライブラリを提供します。コンテナイメージまたはchrootを使用してアクセスできます(参考資料を参照mmdebstrap)。

おすすめ記事