LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1526|回复: 14

升级gcc4.1 beta 20060120后的问题:version `CXXABI_1.3.1' not found

[复制链接]
发表于 2006-1-21 21:28:53 | 显示全部楼层 |阅读模式
从4.0.2一直升过来的.中间也没遇到任何问题.出了最初从stage1到编译完kde用的3.4.5,其他的软件都是用gcc4的.但这次到了4.120060120后,就出现
wangtzh@localhost ~ $ kopete
kopete: /usr/lib/gcc/i686-pc-linux-gnu/3.4.5/libstdc++.so.6: version `CXXABI_1.3.1' not found (required by /usr/kde/3.5/lib/libkhtml.so.4)
是怎么回事呢?:ask

我是用的emerge -uD world.
其中第二个是gcc4.1-20060120.然后有kdelibs-3.5-r2.是不是因为以前的kde用3.4.5编译,但现在kdelibs用的gcc4.1就不行了?:ask :ask

用了fix_libtool_files.sh 3.4.5,也还是没用.难道一定要重新emerge kde吗?
发表于 2006-1-22 00:59:21 | 显示全部楼层
unmask eselect-compiler
emerge it

then use 'eselect compiler' to set your compiler to gcc-4.1
then source /etc/profile
then env-update
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-22 11:43:52 | 显示全部楼层
localhost ~ # eselect compiler set i686-pc-linux-gnu-4.1.0-beta20060120/default
localhost ~ # source /etc/profile
localhost ~ # env-update
还是不行啊!
回复 支持 反对

使用道具 举报

发表于 2006-1-22 12:43:14 | 显示全部楼层
cp /usr/i686-pc-linux-gnu/gcc-bin/4.1.0-beta20060120/* /usr/bin
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-22 20:56:06 | 显示全部楼层
这个也是不行啊。能不能解释一下是怎么回事的错误?
回复 支持 反对

使用道具 举报

发表于 2006-1-22 21:19:58 | 显示全部楼层
sorry,回第二贴时忘了看原来的问题,ignore it

根据你说的症状
你的问题可能是
你的kdelibs使用gcc 4编译的
可是你的/etc/ld.so.conf里却只有
/usr/lib/gcc/i686-pc-linux-gnu/3.4.5
这样找就只能找到gcc 3.4.5的libstdc++.so
而gcc 3和4的c++ ABI是不一样的

eselect compiler set后面跟数字就可以了
eselect compiler list可以看序号
跟版本号也可以,不过
我这里显示的是i686-pc-linux-gnu-4.1.0-beta20060120/vanilla
你确定你那儿是i686-pc-linux-gnu-4.1.0-beta20060120/default?

你看看你的/etc/ld.so.conf里是否有
/usr/lib/gcc/i686-pc-linux-gnu/4.1.0-beta20060120

不过如果没有的话
手工加上是没用的
因为ld.so.conf是env-update生成的
你还是要通过eselect compiler set来改写/etc/env.d里相应文件的内容
我这里有两个,分别是
/etc/env.d/05compiler
/etc/env.d/gcc/config
然后env-update会生成/etc/ld.so.conf并调用ldconfig
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-22 22:36:41 | 显示全部楼层
/etc/ld.so.conf里的内容是这样的:
# ld.so.conf autogenerated by env-update; make all changes to
# contents of /etc/env.d directory
/usr/local/lib
/usr/lib/opengl/nvidia/lib
/usr/i686-pc-linux-gnu/lib
[color="Red"]/usr/lib/gcc/i686-pc-linux-gnu/4.1.0-beta20060120
/usr/lib/gcc/i686-pc-linux-gnu/3.4.5
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6
[color="Red"]/usr/lib/gcc/i686-pc-linux-gnu/4.1.0-beta20060120
/usr/lib/mozilla
/usr/lib/openmotif-2.2
/opt/sun-jdk-1.4.2.10/jre/lib/i686/
/opt/sun-jdk-1.4.2.10/jre/lib/i686/native_threads/
/opt/sun-jdk-1.4.2.10/jre/lib/i686/client/
/opt/sun-jdk-1.4.2.10/jre/lib/i686/server/
/usr/lib/qt4
/usr/kde/3.5/lib
/usr/qt/3/lib
/usr/lib/nspr
/usr/lib/nss
/usr/lib/speech-tools/lib
/usr/games/lib
/usr/lib/fltk-1.1

奇怪的是有2个/usr/lib/gcc/i686-pc-linux-gnu/4.1.0-beta20060120

我这里显示的是i686-pc-linux-gnu-4.1.0-beta20060120/vanilla
你确定你那儿是i686-pc-linux-gnu-4.1.0-beta20060120/default?

是的。
localhost etc # eselect compiler list
Available compilers for CTARGET i686-pc-linux-gnu
  [1]   i686-pc-linux-gnu-3.3.6/default
  [2]   i686-pc-linux-gnu-3.3.6/hardened
  [3]   i686-pc-linux-gnu-3.3.6/hardenednopie
  [4]   i686-pc-linux-gnu-3.3.6/hardenednopiessp
  [5]   i686-pc-linux-gnu-3.3.6/hardenednossp
  [6]   i686-pc-linux-gnu-3.4.5/default
  [7]   i686-pc-linux-gnu-3.4.5/hardened
  [8]   i686-pc-linux-gnu-3.4.5/hardenednopie
  [9]   i686-pc-linux-gnu-3.4.5/hardenednopiessp
  [10]  i686-pc-linux-gnu-3.4.5/hardenednossp
  [11]  i686-pc-linux-gnu-4.1.0-beta20060120/default

Activated profiles:
  i686-pc-linux-gnu *       i686-pc-linux-gnu-4.1.0-beta20060120/default
localhost etc # eselect compiler set 11
Successfully set compiler for i686-pc-linux-gnu to i686-pc-linux-gnu-4.1.0-beta20060120/default.

/etc/env.d/05compiler里只有gcc4.1的
而/etc/env.d/gcc/config里只有gcc3.4.5的.

把config改成了:
CURRENT=i686-pc-linux-gnu-4.1.0-beta20060120

还是不行阿阿
我的/etc/env.d/gcc是这样的:
localhost gcc # ls
config
i686-pc-linux-gnu-3.3.6
i686-pc-linux-gnu-3.3.6-hardened
i686-pc-linux-gnu-3.3.6-hardenednopie
i686-pc-linux-gnu-3.3.6-hardenednopiessp
i686-pc-linux-gnu-3.3.6-hardenednossp
i686-pc-linux-gnu-3.4.5
i686-pc-linux-gnu-3.4.5-hardened
i686-pc-linux-gnu-3.4.5-hardenednopie
i686-pc-linux-gnu-3.4.5-hardenednopiessp
i686-pc-linux-gnu-3.4.5-hardenednossp
i686-pc-linux-gnu-4.1.0-beta20060120
你的类似吗?
回复 支持 反对

使用道具 举报

发表于 2006-1-22 22:49:32 | 显示全部楼层
/usr/lib/gcc/i686-pc-linux-gnu/3.4.5
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6
ld.so.conf这两个是不该出现的

eselect应该可以改这个文件的/etc/env.d/gcc/config
不知道你哪里是怎么回事
你手工改了之后还要env-update
然后看看/etc/ld.so.conf里还有没有有关3.4的路径
没有就对了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-22 22:52:07 | 显示全部楼层
Post by zhllg
/usr/lib/gcc/i686-pc-linux-gnu/3.4.5
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6
ld.so.conf这两个是不该出现的
why?
Post by zhllg

eselect应该可以改这个文件的/etc/env.d/gcc/config
不知道你哪里是怎么回事
你手工改了之后还要env-update
然后看看/etc/ld.so.conf里还有没有有关3.4的路径
没有就对了

已经env-update 过了。还是3.3.6,3.4.5,4.1一应俱全:ask
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-22 22:55:34 | 显示全部楼层
这里的/usr/lib/gcc/i686-pc-linux-gnu/3.4.5/libstdc++.so.6是哪个包提供的?
sys-libs/libstdc++-v3?
virtual/libstdc++?
如果用gcc4emerge了提供libstdc++的包,是不是问题产生的原因?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表