|
在新版本LFS中使用gcc-3.2.1(3.2.2), glibc-2.3.1和 binutils-2.13.2.1
而很不幸的是在这个版本的gcc中有一个潜在的bug,不能检测长于
3位的版本号。也就是说在检测binutils的时候回出现问题。
在configure的时候回出现
checking assembler hidden support... no
这个地方本来应该是yes
这个问题是存在于gcc的configure文件中的。从而在这样编译的gcc先天不足而最终在编译kde的时候出现,导致不能使用kde程序。
现在如果你在使用这个版本的lfs的话,呵呵。有几个解决办法。
1. 把binutils换成2.13.2版,这个gcc可以认。
2. 在第5,6章中重新编译gcc,这个是一个万全知法,就是重新编译lfs(要吐血的),当然可以先试试编译一个gcc,然后试试kde。在编译gcc之前。echo "#define HAVE_GAS_HIDDEN 1" >>gcc/auto-host.h
3. 别用kde程序,或者呵呵,好好读读lfs的邮件列表,烧烧香等高人们出高招吧。
具体看一眼这个bug吧,在gcc-3.2.1/gcc/configure
7220行左右。
# GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN.
# This is irritatingly difficult to feature test for. Look for
# the date string after the version number.
ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1`
--> $ld_ver == GNU ld version 2.13.2.1
ld_vers=`echo $ld_ver | sed -n 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\(\|\.[0-9][0-9]*\)\)\([ ].*\|\)$,\1,p'`
ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
然后变量就是空的了。接着不远给出
elif test -z "$ld_vers"; then
# If there was no date string nor ld version number, something is wrong
gcc_cv_as_hidden="no"
...
呵呵,可以拿到shell版讨论一下,HOHO |
|