LinuxSir.cn,穿越时空的Linuxsir!

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

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

[复制链接]
发表于 2009-1-28 16:19:58 | 显示全部楼层 |阅读模式
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出来了……= =耐心剩下的不是太多,所以还是决定问问是否有人碰过类似的问题,以及请教咋解决呢?
发表于 2009-1-28 21:28:27 | 显示全部楼层
  1. kim@Boxer~$emerge --info
  2. 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)
  3. ==============================================
  4. System uname: Linux-2.6.28-gentoo-r1-x86_64-Intel-R-_Core-TM-2_Duo_CPU_T9300_@_2.50GHz-with-glibc2.2.5
  5. Timestamp of tree: Wed, 28 Jan 2009 05:15:01 +0000
  6. ccache version 2.4 [enabled]
  7. app-shells/bash:      3.2_p48
  8. dev-java/java-config:  1.3.7-r1, 2.1.7
  9. dev-lang/python:      2.5.4-r2
  10. dev-util/ccache:        2.4-r8
  11. sys-apps/baselayout: 2.0.0
  12. sys-apps/openrc:      0.4.2
  13. sys-apps/sandbox:    1.3.3
  14. sys-devel/autoconf:   2.13, 2.63
  15. sys-devel/automake: 1.5, 1.9.6-r2, 1.10.2
  16. sys-devel/binutils:    2.19
  17. sys-devel/gcc-config:  1.4.1
  18. sys-devel/libtool:      2.2.6a
  19. virtual/os-headers:    2.6.28-r1
  20. ACCEPT_KEYWORDS="amd64 ~amd64"
  21. CBUILD="x86_64-pc-linux-gnu"
  22. CFLAGS="-march=core2 -O2 -pipe -fomit-frame-pointer"
  23. CHOST="x86_64-pc-linux-gnu"
复制代码


我这没啥问题。。。

反正我是坚决不用multilib ..
回复 支持 反对

使用道具 举报

发表于 2009-1-28 22:19:12 | 显示全部楼层
我也是multilib的x86_64,今早升级了gcc-4.3.3,硬是无法编译sys-libs/glibc-2.9_p20081201-r1,崩溃ing。
  1. ../misc/syslog.c: In function '__vsyslog_chk':
  2. ../misc/syslog.c:123: sorry, unimplemented: inlining failed in call to 'syslog': function body not available
  3. ../misc/syslog.c:155: sorry, unimplemented: called from here
  4. 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
  5. make[2]: *** Waiting for unfinished jobs....
  6. make[2]: Leaving directory `/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/glibc-2.9-20081201/misc'
  7. make[1]: *** [misc/subdir_lib] Error 2
  8. make[1]: Leaving directory `/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/glibc-2.9-20081201'
  9. make: *** [all] Error 2
  10. *
  11. * ERROR: sys-libs/glibc-2.9_p20081201-r1 failed.
  12. * Call stack:
  13. *               ebuild.sh, line   49:  Called src_compile
  14. *             environment, line 3500:  Called eblit-run 'src_compile'
  15. *             environment, line 1114:  Called eblit-glibc-src_compile
  16. *       src_compile.eblit, line  179:  Called src_compile
  17. *             environment, line 3500:  Called eblit-run 'src_compile'
  18. *             environment, line 1114:  Called eblit-glibc-src_compile
  19. *       src_compile.eblit, line  187:  Called toolchain-glibc_src_compile
  20. *       src_compile.eblit, line  122:  Called die
  21. * The specific snippet of code:
  22. *              make PARALLELMFLAGS="${MAKEOPTS}" || die "make for ${ABI} failed"
  23. *  The die message:
  24. *   make for x86 failed
  25. *
  26. * If you need support, post the topmost build error, and the call stack if relevant.
  27. * A complete build log is located at '/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/temp/build.log'.
  28. * The ebuild environment file is located at '/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/temp/environment'.
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-29 13:28:42 | 显示全部楼层
一日过去……
楼上的兄弟比我强啊,至少这个地方过去了。检查log发现我的问题应该是multilib下不同的配置却仍然使用同一套CFLAGS造成的。可是又没发现有专门给x86指定CFLAGS的方法……难道handbook看漏了?
回复 支持 反对

使用道具 举报

发表于 2009-1-29 15:43:34 | 显示全部楼层
Post by palxex;1941946
仍然是ABI=x86

虽然仍然不大清楚问题的原由,但是把CFLAGS换成“-O2 -pipe”后就可以编译了。看来优化也是应该有盲区的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-29 23:23:42 | 显示全部楼层
多谢楼上,不过咱俩问题似乎不同,试了下没解决呢.
问题应该是在我的portage在multilib ABI=x86下的CFLAGS里压根没有-m32(sandbox那里也是同一个问题,被我hack过去了,但这总不是办法),从multilib eclass那里看到其实是做了这个处理的,但没传递到后面,是在哪里没了呢?我还是一行行调吧.
回复 支持 反对

使用道具 举报

发表于 2009-1-29 23:30:43 | 显示全部楼层
佩服你,如果我遇到这问题,肯定现在已经重装完了。。

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

使用道具 举报

发表于 2009-1-30 00:14:49 | 显示全部楼层
Post by coderoar;1942031
我也是multilib的x86_64,今早升级了gcc-4.3.3,硬是无法编译sys-libs/glibc-2.9_p20081201-r1,崩溃ing。

  1. ../misc/syslog.c: In function '__vsyslog_chk':
  2. ../misc/syslog.c:123: sorry, unimplemented: inlining failed in call to 'syslog': function body not available
  3. ../misc/syslog.c:155: sorry, unimplemented: called from here
  4. 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
  5. make[2]: *** Waiting for unfinished jobs....
  6. make[2]: Leaving directory `/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/glibc-2.9-20081201/misc'
  7. make[1]: *** [misc/subdir_lib] Error 2
  8. make[1]: Leaving directory `/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/work/glibc-2.9-20081201'
  9. make: *** [all] Error 2
  10. *
  11. * ERROR: sys-libs/glibc-2.9_p20081201-r1 failed.
  12. * Call stack:
  13. *               ebuild.sh, line   49:  Called src_compile
  14. *             environment, line 3500:  Called eblit-run 'src_compile'
  15. *             environment, line 1114:  Called eblit-glibc-src_compile
  16. *       src_compile.eblit, line  179:  Called src_compile
  17. *             environment, line 3500:  Called eblit-run 'src_compile'
  18. *             environment, line 1114:  Called eblit-glibc-src_compile
  19. *       src_compile.eblit, line  187:  Called toolchain-glibc_src_compile
  20. *       src_compile.eblit, line  122:  Called die
  21. * The specific snippet of code:
  22. *              make PARALLELMFLAGS="${MAKEOPTS}" || die "make for ${ABI} failed"
  23. *  The die message:
  24. *   make for x86 failed
  25. *
  26. * If you need support, post the topmost build error, and the call stack if relevant.
  27. * A complete build log is located at '/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/temp/build.log'.
  28. * The ebuild environment file is located at '/mnt/cache/portage/portage/sys-libs/glibc-2.9_p20081201-r1/temp/environment'.
复制代码


遇到相同的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-30 02:25:47 | 显示全部楼层
Post by kimux;1942199
佩服你,如果我遇到这问题,肯定现在已经重装完了。。

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


初学者么- -装到这儿花了一个多星期,文档浩如烟海口牙。反正就是积累经验来的,不急- -
多谢提供funtoo的消息哈,听人说过这是gentoo的方向,就是没翻过还。
回复 支持 反对

使用道具 举报

发表于 2009-1-30 02:48:39 | 显示全部楼层
Post by kimux;1942199
佩服你,如果我遇到这问题,肯定现在已经重装完了。。

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

不知道出了什么问题。前段时间升级的时候,从amd64变到~amd64,编译glibc没有出问题。这次我用-e world升级整个系统,就是这个包没有办法编译。
回复 支持 反对

使用道具 举报

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

本版积分规则

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