【发布时间】:2023-03-28 20:41:01
【问题描述】:
我正在使用 gcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 进行编译,但我也尝试了 gcc 4.1.2,但我得到了同样的错误。
gcc 5.2.1
字符串 /usr/lib/x86_64-linux-gnu/libstdc++.so.6|grep CXXABI 给出
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_TM_1
CXXABI_FLOAT128
对于正在编译的编译器 gcc 4.8.3
strings gcc-build/build/x86_64-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6|grep CXXABI
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_TM_1
CXXABI_1.3
CXXABI_1.3.2
CXXABI_1.3.6
CXXABI_1.3.1
CXXABI_1.3.5
CXXABI_1.3.4
CXXABI_TM_1
CXXABI_1.3.7
CXXABI_1.3.3
即没有 1.3.8
在运行 configure 和 make 之前我也尝试过:
export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH
../gcc-4.8.3/configure --build=x86_64-linux-gnu
make
错误信息:
msgfmt -o fr.mo ../../../../gcc-4.8.3/libstdc++-v3/po/fr.po
msgfmt: gcc-build/build/x86_64-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/libicuuc.so.55)
msgfmt: Makefile:460: recipe for target 'de.mo' failed
当使用 gcc 4.1.2 编译时,我得到同样的错误:
msgfmt -o fr.mo ../../../../libstdc++-v3/po/fr.po
gcc-build/gcc-4.8.3/build/x86_64-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/libicuuc.so.55)
Makefile:460: recipe for target 'de.mo' failed
使用 gcc 4.1.2 编译时,我在配置和制作之前做了以下操作
#where libraries i have compiled with gcc 4.1.2 are located i.e
export LD_LIBRARY_PATH=/opt/devtools/gcc-4.1.2/lib
#where libstdc++.so.6 is
export LIBRARY_PATH=/opt/gcc-4.1.2/lib64
strings /opt/gcc-4.1.2/lib64/libstdc++.so.6|grep CXXABI
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.1
CXXABI_1.3
这让我想知道 CXXABI_1.3.8 是从哪里来的。我还在更改编译器之间做了一个“make distclean”
【问题讨论】:
-
所以你有一个库或一些类似的库,它需要比你所链接的编译器支持的更新版本的 C++ 库。用旧的编译器重新编译整个项目,应该可以解决它。
-
您正在使用的某些头文件(或目标文件)将需要更新的 C++ 库。我不确定您需要什么进一步的信息来解决这个问题,但基本上,您必须修复您的构建环境,以便它具有相关的 C++ 库...您可以使用不同的编译器重建
/usr/lib/x86_64-linux-gnu/libicuuc.so.55,也许? -
请注意,特定编译器版本附带的 C++ 库将支持特定 C++ ABI 版本,因此混合使用编译器会产生此类错误。
-
非常感谢您的帮助。用 gcc 4.1.2 构建 libicuuc.so.55 然后构建 gcc 解决了我的问题