+ -
当前位置:首页 → 问答吧 → gcc升级,遇到的一系列解决了跟还没解决的问题……

gcc升级,遇到的一系列解决了跟还没解决的问题……

时间:2009-01-28

来源:互联网

profile: x86_64 multilib.这是第一次尝试amd64,因此比较审慎没敢选nomultilib,结果后面的问题几乎全是出在multilib上。
因为x86_64 g++ 4.1.2在处理C++ RVO上的问题(优化掉了几个引用间的互作用导致程序跑不起来了,以前用其他发行版时i386的没这种问题),再说前几天升级world时gcc 4.3.2已经安装,于是决定升级。按gentoo gcc升级文档的general篇,gcc-config x86_64-pc-linux-gnu-4.3.2之后emerge -eav system,于是噩梦开始了- -
第一个出问题的包是sys-apps/sandbox-1.3.2。问题在编译到ABI=x86的时候出现。首先的问题是configure里checking for x86_64-pc-linux-gnu-gcc失败了。查看config.log,IA32 Emulation的问题,问题是我是用genkernel生成的内核,确认了下/etc/kernels里对应的config里也有,没理由啊。于是把内核捣鼓了好久未果之后满网上去查,结果发现有人说删去/usr/bin/x86_64-pc-linux-gnu-*就行了- -原理是啥?我不知道,照做,接下来一个内含库的生成时libtool却还要用x86_64-pc-linux-gnu-gcc,于是hack了其ebuild,专门在econf前后隐显x86_64-pc-linux-gnu-gcc。
然后是重中之重sys-libs/glibc-2.9_p20081201-r1。仍然是ABI=x86。20081201是make时报TLS support is required,20081201-r1是configure时报无法验证long double的sizeof= =(tls的检测倒是过去了,上一个版本的检测用的参数就有问题).这次彻底卡在这儿了。
然后今天上论坛,就看到4.3.3出来了……= =耐心剩下的不是太多,所以还是决定问问是否有人碰过类似的问题,以及请教咋解决呢?

作者: palxex   发布时间: 2009-01-28

代码:
kim@Boxer~$emerge --info
Portage 2.1.6.7 (default/linux/amd64/2008.0/no-multilib, gcc-4.3.3, glibc-2.9_p20081201-r1 2.6.28-gentoo-r1 x86_64)
==============================================
System uname: Linux-2.6.28-gentoo-r1-x86_64-Intel-R-_Core-TM-2_Duo_CPU_T9300_@_2.50GHz-with-glibc2.2.5
Timestamp of tree: Wed, 28 Jan 2009 05:15:01 +0000
ccache version 2.4 [enabled]
app-shells/bash: 3.2_p48
dev-java/java-config: 1.3.7-r1, 2.1.7
dev-lang/python: 2.5.4-r2
dev-util/ccache: 2.4-r8
sys-apps/baselayout: 2.0.0
sys-apps/openrc: 0.4.2
sys-apps/sandbox: 1.3.3
sys-devel/autoconf: 2.13, 2.63
sys-devel/automake: 1.5, 1.9.6-r2, 1.10.2
sys-devel/binutils: 2.19
sys-devel/gcc-config: 1.4.1
sys-devel/libtool: 2.2.6a
virtual/os-headers: 2.6.28-r1
ACCEPT_KEYWORDS="amd64 ~amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=core2 -O2 -pipe -fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
我这没啥问题。。。

反正我是坚决不用multilib ..

作者: kimux   发布时间: 2009-01-29

我也是multilib的x86_64,今早升级了gcc-4.3.3,硬是无法编译sys-libs/glibc-2.9_p20081201-r1,崩溃ing。

代码:
../misc/syslog.c: In function '__vsyslog_chk':
../misc/syslog.c:123: sorry, unimplemented: inlining failed in call to 'syslog': function body not available
../misc/syslog.c:155: sorry, unimplemented: called from here
make[2]: *** [/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/build-x86-x86_64-pc-linux-gnu-nptl/misc/syslog.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/glibc-2.9-20081201/misc'
make[1]: *** [misc/subdir_lib] Error 2
make[1]: Leaving directory `/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/glibc-2.9-20081201'
make: *** [all] Error 2
 * 
 * ERROR: sys-libs/glibc-2.9_p20081201-r1 failed.
 * Call stack:
 * ebuild.sh, line 49: Called src_compile
 * environment, line 3500: Called eblit-run 'src_compile'
 * environment, line 1114: Called eblit-glibc-src_compile
 * src_compile.eblit, line 179: Called src_compile
 * environment, line 3500: Called eblit-run 'src_compile'
 * environment, line 1114: Called eblit-glibc-src_compile
 * src_compile.eblit, line 187: Called toolchain-glibc_src_compile
 * src_compile.eblit, line 122: Called die
 * The specific snippet of code:
 * make PARALLELMFLAGS="${MAKEOPTS}" || die "make for ${ABI} failed"
 * The die message:
 * make for x86 failed
 * 
 * If you need support, post the topmost build error, and the call stack if relevant.
 * A complete build log is located at '/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/temp/build.log'.
 * The ebuild environment file is located at '/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/temp/environment'.

作者: coderoar   发布时间: 2009-01-29

一日过去……
楼上的兄弟比我强啊,至少这个地方过去了。检查log发现我的问题应该是multilib下不同的配置却仍然使用同一套CFLAGS造成的。可是又没发现有专门给x86指定CFLAGS的方法……难道handbook看漏了?

作者: palxex   发布时间: 2009-01-29

引用:
作者: palxex
仍然是ABI=x86
虽然仍然不大清楚问题的原由,但是把CFLAGS换成“-O2 -pipe”后就可以编译了。看来优化也是应该有盲区的。

作者: coderoar   发布时间: 2009-01-29

多谢楼上,不过咱俩问题似乎不同,试了下没解决呢.
问题应该是在我的portage在multilib ABI=x86下的CFLAGS里压根没有-m32(sandbox那里也是同一个问题,被我hack过去了,但这总不是办法),从multilib eclass那里看到其实是做了这个处理的,但没传递到后面,是在哪里没了呢?我还是一行行调吧.

作者: palxex   发布时间: 2009-01-30

佩服你,如果我遇到这问题,肯定现在已经重装完了。。

我是用funtoo.org上面的stage3,gcc直接就是4.3.2.。所以不存在升级的问题。。逃过一劫

作者: kimux   发布时间: 2009-01-30

引用:
作者: coderoar
我也是multilib的x86_64,今早升级了gcc-4.3.3,硬是无法编译sys-libs/glibc-2.9_p20081201-r1,崩溃ing。

代码:
../misc/syslog.c: In function '__vsyslog_chk':
../misc/syslog.c:123: sorry, unimplemented: inlining failed in call to 'syslog': function body not available
../misc/syslog.c:155: sorry, unimplemented: called from here
make[2]: *** [/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/build-x86-x86_64-pc-linux-gnu-nptl/misc/syslog.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/glibc-2.9-20081201/misc'
make[1]: *** [misc/subdir_lib] Error 2
make[1]: Leaving directory `/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/glibc-2.9-20081201'
make: *** [all] Error 2
 * 
 * ERROR: sys-libs/glibc-2.9_p20081201-r1 failed.
 * Call stack:
 * ebuild.sh, line 49: Called src_compile
 * environment, line 3500: Called eblit-run 'src_compile'
 * environment, line 1114: Called eblit-glibc-src_compile
 * src_compile.eblit, line 179: Called src_compile
 * environment, line 3500: Called eblit-run 'src_compile'
 * environment, line 1114: Called eblit-glibc-src_compile
 * src_compile.eblit, line 187: Called toolchain-glibc_src_compile
 * src_compile.eblit, line 122: Called die
 * The specific snippet of code:
 * make PARALLELMFLAGS="${MAKEOPTS}" || die "make for ${ABI} failed"
 * The die message:
 * make for x86 failed
 * 
 * If you need support, post the topmost build error, and the call stack if relevant.
 * A complete build log is located at '/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/temp/build.log'.
 * The ebuild environment file is located at '/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/temp/environment'.
遇到相同的问题。

作者: blackwhite   发布时间: 2009-01-30

引用:
作者: kimux
佩服你,如果我遇到这问题,肯定现在已经重装完了。。

我是用funtoo.org上面的stage3,gcc直接就是4.3.2.。所以不存在升级的问题。。逃过一劫
初学者么- -装到这儿花了一个多星期,文档浩如烟海口牙。反正就是积累经验来的,不急- -
多谢提供funtoo的消息哈,听人说过这是gentoo的方向,就是没翻过还。

作者: palxex   发布时间: 2009-01-30

引用:
作者: kimux
佩服你,如果我遇到这问题,肯定现在已经重装完了。。

我是用funtoo.org上面的stage3,gcc直接就是4.3.2.。所以不存在升级的问题。。逃过一劫
不知道出了什么问题。前段时间升级的时候,从amd64变到~amd64,编译glibc没有出问题。这次我用-e world升级整个系统,就是这个包没有办法编译。

作者: blackwhite   发布时间: 2009-01-30

http://bugs.gentoo.org/256622
http://bugs.gentoo.org/show_bug.cgi?id=256622
这个问题得到了修正。
emerge --sync.

作者: blackwhite   发布时间: 2009-01-30