新编译的 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++ 中似乎没有任何版本符号。so:

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

(没有别的)(顺便说一句,如果我在检查已安装的库之前“make install”gcc,我会得到相同的结果)

转到另一个系统,发出相同的命令(输出被截断):

> 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 就可以了。

相关内容