新しくコンパイルされた libstdc++ にはバージョン記号はありません。

新しくコンパイルされた libstdc++ にはバージョン記号はありません。

次の構成でGCC 10.1バージョンをコンパイルしています。

../configure --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/home/user/toolchain/gcc  --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --enable-shared --enable-gnu-unique-object --with-linker-hash-style=gnu

コンパイルが完了した後、コンパイルされたlistdc ++にバージョンシンボルがないようです。だから:

> strings ./x86_64-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28 | grep GLIBCXX
  GLIBCXX_FORCE_NEW
  GLIBCXX_DEBUG_MESSAGE_LENGTH

(他にはありません)(しかし、インストールされているライブラリを確認する前にgccを「make install」すると同じ結果が得られます。)

別のシステムに移動して同じコマンドを実行します(出力が切り捨てられます)。

> strings /usr/lib64/libstdc++.so.6.0.28 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.5
[ ... ]
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
[ ... ]

新しくコンパイルされたgcc / libstdc ++バージョンにバージョンシンボルが表示されないのはなぜですか?

ベストアンサー1

実際にエラーが見つかりました。システム用にGCCを設定するときに、libstdc ++ v3のconfig.logで次のものが見つかりました。

configure:74963: WARNING: === Linker version 2501 is too old for
configure:74965: WARNING: === full symbol versioning support in this release of GCC.
configure:74967: WARNING: === You would need to upgrade your binutils to version
configure:74969: WARNING: === 21400 or later and rebuild GCC.
configure:74971: WARNING: === Symbol versioning will be disabled.

(binutils)ldの新しいバージョンをコンパイルし、それを使用してgccを再構築します。

おすすめ記事