从源代码构建gcc 4.8.3时出错:未找到libstdc ++。so.6:版本'CXXABI_1.3.8'(需要/usr/lib/x86_64-linux-gnu/libicuuc.so.55) [英] Error building gcc 4.8.3 from source: libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/libicuuc.so.55)

查看:1988
本文介绍了从源代码构建gcc 4.8.3时出错:未找到libstdc ++。so.6:版本'CXXABI_1.3.8'(需要/usr/lib/x86_64-linux-gnu/libicuuc.so.55)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是gcc(Ubuntu 5.2.1-22ubuntu2)5.2.1 20151010进行编译,但我也尝试过gcc 4.1.2和我得到了同样的错误。



for 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 
$ b $ 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
CX XABI_1.3.3

即1.3.8

<

  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

错误信息:

  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:版本'CXXABI_1.3.8'找不到(需要/usr/lib/x86_64-linux-gnu/libicuuc.so。 55)
msgfmt:Makefile:460:目标'de.mo'的配方失败

当用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 :版本`CXXABI_1.3.8'找不到(需要/usr/lib/x86_64-linux-gnu/libicuuc.so.55)
Makefile:460:目标'de.mo'的配方失败

使用gcc 4.1.2进行编译时,我在配置和制作

 #我用gcc 4.1.2编译过的#where库位于ie 
export LD_LIBRARY_PATH = / opt / devtools / gcc-4.1.2 / lib
#where libstdc ++。so .6是
export LIBRARY_PATH = / opt / gcc-4.1.2 / lib64

字符串/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 ++库。 当将二进制文件从一个系统移动到另一个系统时,如果新系统上安装的共享库比通常有三种合理的解决方案:
1.使用较旧的编译器重新编译违规库。
2.安装新版本的C ++库。
3.从源代码重新编译C ++库(使用足够新的编译器)。


I 'm using gcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 for the compile but I have also tried gcc 4.1.2 and I get the same error.

for gcc 5.2.1

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6|grep CXXABI gives

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

For the compiler being compiled 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

i.e no 1.3.8

prior to running configure and make I also tried:

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 

Error message:

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

When compiling with gcc 4.1.2 I get the same error:

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

When compiling with gcc 4.1.2 i did the following prior to configure and make

#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

which makes me wonder where CXXABI_1.3.8 is coming from. I also did a 'make distclean' between changing compiler

解决方案

So, this problem occurs when a library that has been built with a newer compiler is linked with an older version of C++ library - or sometimes when a newer headerfile is used to compile something that then links to an older C++ library.

It is also possible come up with a similar problem when moving binary files from one system to another, if the shared libraries installed on the "new system" are older than the ones on which the code was built.

There are typically three plausible solutions: 1. Recompile the offending library with an older compiler. 2. Install a newever version of the C++ library. 3. Rebuild the C++ library from sources (with a new enough compiler).

这篇关于从源代码构建gcc 4.8.3时出错:未找到libstdc ++。so.6:版本'CXXABI_1.3.8'(需要/usr/lib/x86_64-linux-gnu/libicuuc.so.55)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆