LinuxSir.cn,穿越时空的Linuxsir!

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

LFS-6 chapter 5:binutils-2.15.91.0.2-Pass 2出错

[复制链接]
发表于 2005-1-8 20:04:25 | 显示全部楼层 |阅读模式
debian (kernel 2.6.7)

按LFS 6编译,在chapter 5中编译binutils-2.15.91.0.2-Pass 2时出错

出错信息:
make[1]: Entering directory `/mnt/lfs/sources/binutils-build/libiberty'
make[2]: Entering directory `/mnt/lfs/sources/binutils-build/libiberty/testsuite'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mnt/lfs/sources/binutils-build/libiberty/testsuite'
make[1]: Leaving directory `/mnt/lfs/sources/binutils-build/libiberty'
make[1]: Entering directory `/mnt/lfs/sources/binutils-build/intl'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/mnt/lfs/sources/binutils-build/intl'
make[1]: Entering directory `/mnt/lfs/sources/binutils-build/bfd'
make  all-recursive
make[2]: Entering directory `/mnt/lfs/sources/binutils-build/bfd'
Making all in doc
make[3]: Entering directory `/mnt/lfs/sources/binutils-build/bfd/doc'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/mnt/lfs/sources/binutils-build/bfd/doc'
Making all in po
make[3]: Entering directory `/mnt/lfs/sources/binutils-build/bfd/po'
file=../../../binutils-2.15.91.0.2/bfd/po/`echo fr | sed 's,.*/,,'`.gmo \
  && rm -f $file && PATH=../srcPATH no -o $file ../../../binutils-2.15.91.0.2/bfd/po/fr.po
make[3]: Leaving directory `/mnt/lfs/sources/binutils-build/bfd/po'
make[2]: Leaving directory `/mnt/lfs/sources/binutils-build/bfd'
make[1]: Leaving directory `/mnt/lfs/sources/binutils-build/bfd'
/bin/sh: line1: no: command not found
make[3]: *** [fr.gmo] Error 127
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive-am] Error 2
make: *** [all-bfd] Error 2

config.log信息:
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

configure:593: checking host system type
configure:614: checking target system type
configure:632: checking build system type
configure:687: checking for a BSD compatible install
configure:740: checking whether ln works
configure:764: checking whether ln -s works
configure:1788: checking for gcc
configure:1901: checking whether the C compiler (gcc  ) works
configure:1917: gcc -o conftest    conftest.c  1>&5
configure:1943: checking whether the C compiler (gcc  ) is a cross-compiler
configure:1948: checking whether we are using GNU C
configure:1957: gcc -E conftest.c
configure:1976: checking whether gcc accepts -g
configure:2043: checking for gnatbind
configure:2108: checking whether compiler driver understands Ada
configure:2141: checking how to compare bootstrapped objects
configure:2214: checking for correct version of gmp.h
configure:2227: gcc -c -g -O2   conftest.c 1>&5
configure:2217:17: gmp.h: No such file or directory
configure: In function `main':
configure:2221: error: `choke' undeclared (first use in this function)
configure:2221: error: (Each undeclared identifier is reported only once
configure:2221: error: for each function it appears in.)
configure:2221: error: parse error before "me"
configure: failed program was:
#line 2216 "configure"
#include "confdefs.h"
#include "gmp.h"
int main() {

#if __GNU_MP_VERSION < 3
choke me
#endif

; return 0; }
configure:2725: checking for bison
configure:2760: checking for bison
configure:2795: checking for gm4
configure:2795: checking for gnum4
configure:2795: checking for m4
configure:2830: checking for flex
configure:2865: checking for flex
configure:2900: checking for makeinfo
configure:3501: checking for i686-pc-linux-gnu-ar
configure:3534: checking for ar
configure:3573: checking for i686-pc-linux-gnu-as
configure:3606: checking for as
configure:3645: checking for i686-pc-linux-gnu-dlltool
configure:3678: checking for dlltool
configure:3717: checking for i686-pc-linux-gnu-ld
configure:3789: checking for i686-pc-linux-gnu-nm
configure:3822: checking for nm
configure:3861: checking for i686-pc-linux-gnu-ranlib
configure:3894: checking for ranlib
configure:3933: checking for i686-pc-linux-gnu-windres
configure:3966: checking for windres
configure:4005: checking for i686-pc-linux-gnu-objcopy
configure:4038: checking for objcopy
configure:4077: checking for i686-pc-linux-gnu-objdump
configure:4110: checking for objdump
configure:4156: checking for i686-pc-linux-gnu-ar
configure:4189: checking for ar
configure:4228: checking for i686-pc-linux-gnu-as
configure:4261: checking for as
configure:4300: checking for i686-pc-linux-gnu-dlltool
configure:4333: checking for dlltool
configure:4372: checking for i686-pc-linux-gnu-ld
configure:4405: checking for ld
configure:4444: checking for i686-pc-linux-gnu-nm
configure:4477: checking for nm
configure:4516: checking for i686-pc-linux-gnu-ranlib
configure:4549: checking for ranlib
configure:4588: checking for i686-pc-linux-gnu-windres
configure:4621: checking for windres
configure:4706: checking whether to enable maintainer-specific portions of Makefiles
configure:4753: checking if symbolic links between directories work


:help  :help  :help  :help  :help  :help
 楼主| 发表于 2005-1-8 23:19:47 | 显示全部楼层
gmp.h,fr.po是什么?
现在编译的binutils应该是基于Pass 2的gcc的吧,gcc编译是通过的,按理说应该有啊??!!

下面是我编译gcc中运行make -k check后得到的summary,不知是不是对判断问题有帮助。

cat <<'EOF' |
LAST_UPDATED: Obtained from CVS: -rgcc_3_4_1_release

Native configuration is i686-pc-linux-gnu

                === g++ tests ===


Running target unix

                === g++ Summary ===

                === gcc tests ===


Running target unix

                === gcc Summary ===


                === libstdc++-v3 check-abi Summary ===

# of added symbols:                 298
# of missing symbols:                 284
# of incompatible symbols:         284
                === libstdc++ tests ===


Running target unix
FAIL: 22_locale/messages/members/char/1.cc execution test
FAIL: 22_locale/messages/members/char/2.cc execution test
FAIL: 22_locale/messages/members/char/wrapped_env.cc execution test
FAIL: 22_locale/messages/members/char/wrapped_locale.cc execution test
FAIL: 22_locale/messages_byname/named_equivalence.cc execution test
FAIL: ext/enc_filebuf/char/13189.cc (test for excess errors)
WARNING: ext/enc_filebuf/char/13189.cc compilation failed to produce executable
FAIL: ext/enc_filebuf/wchar_t/13189.cc (test for excess errors)
WARNING: ext/enc_filebuf/wchar_t/13189.cc compilation failed to produce executable

                === libstdc++ Summary ===

# of expected passes                2687
# of unexpected failures        7
# of expected failures                6

Compiler version: gcc
Platform: i686-pc-linux-gnu
configure flags: --prefix=/tools --libexecdir=/tools/lib --with-local-prefix=/tools --enable-clocale=gnu --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-languages=c,c++ --disable-libstdcxx-pch
EOF
Mail -s "Results for gcc testsuite on i686-pc-linux-gnu" gcc-testresults@gcc.gnu.org &&
mv /mnt/lfs/sources/gcc-build/./gcc/testsuite/g++.sum /mnt/lfs/sources/gcc-build/./gcc/testsuite/g++.sum.sent &&
mv /mnt/lfs/sources/gcc-build/./gcc/testsuite/gcc.sum /mnt/lfs/sources/gcc-build/./gcc/testsuite/gcc.sum.sent &&
mv /mnt/lfs/sources/gcc-build/./i686-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++-abi.sum /mnt/lfs/sources/gcc-build/./i686-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++-abi.sum.sent &&
mv /mnt/lfs/sources/gcc-build/./i686-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++.sum /mnt/lfs/sources/gcc-build/./i686-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++.sum.sent &&
mv /mnt/lfs/sources/gcc-build/./gcc/testsuite/g++.log /mnt/lfs/sources/gcc-build/./gcc/testsuite/g++.log.sent &&
mv /mnt/lfs/sources/gcc-build/./gcc/testsuite/gcc.log /mnt/lfs/sources/gcc-build/./gcc/testsuite/gcc.log.sent &&
mv /mnt/lfs/sources/gcc-build/./i686-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++-abi.log /mnt/lfs/sources/gcc-build/./i686-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++-abi.log.sent &&
mv /mnt/lfs/sources/gcc-build/./i686-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++.log /mnt/lfs/sources/gcc-build/./i686-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++.log.sent &&
true

帮忙啊~~~
发表于 2005-1-9 02:47:29 | 显示全部楼层
经过俺的不懈努力,终于发现你的错误原因拉。
你可以在make时输入 make >tmp 等待它出现错误。
使用vi编译tmp,输入:set nu在第253行及255行你会发现与下面类似的语句,但是
没有后面的/usr/bin/msgfmt
checking for msgfmt... (cached) /usr/bin/msgfmt
checking for gmsgfmt... (cached) /usr/bin/msgfmt

file=../../../binutils-2.15.91.0.2/bfd/po/`echo fr | sed 's,.*/,,'`.gmo \
&& rm -f $file && PATH=../srcPATH no -o $file

file=../../../binutils-2.15.91.0.2/bfd/po/`echo fr | sed 's,.*/,,'`.gmo \
  && rm -f $file && PATH=../srcPATH /usr/bin/msgfmt -o $file ../../../binutils-2.15.91.0.2/bfd/po/fr.po
可见不应该是no -o $file 而是/usr/bin/msgfmt -o $file
所以当运行时最后出现“/bin/sh: line1: no: command not found”
因为根本没有no这个命令嘛. :cool:
解决办法:
安装 Gettext-0.14.1 可以按照6.30的办法从源码包在主系统编译,安装,或者
去apt-get .........
希望俺努力得出的结论是正确的。阿弥陀佛。
 楼主| 发表于 2005-1-10 00:28:06 | 显示全部楼层
great, u are so cool! thanks a lot!
问题的确是host system缺少gettext, 但是很奇怪,我的机器上有gettext-core(还是gettext-base),难道不顶事?
 楼主| 发表于 2005-1-10 00:53:41 | 显示全部楼层
还有啊,你说的我看不懂

是从
file=../../../binutils-2.15.91.0.2/bfd/po/`echo fr | sed 's,.*/,,'`.gmo \
&& rm -f $file && PATH=../srcPATH no -o $file

file=../../../binutils-2.15.91.0.2/bfd/po/`echo fr | sed 's,.*/,,'`.gmo \
&& rm -f $file && PATH=../srcPATH /usr/bin/msgfmt -o $file ../../../binutils-2.15.91.0.2/bfd/po/fr.po

这两句中判断“是no -o $file 而是/usr/bin/msgfmt -o $file"的吗?为何能做此判断?

为什么装gettext之后就能解决这个问题了呢?
发表于 2005-1-10 01:54:34 | 显示全部楼层
/bin/sh: line1: no: command not found
这行就是出错的关键位置。很明显,make到那里是在运行一个命令
结果运行的是no,没有这个命令,就command not found
这个no就来自&& rm -f $file && PATH=../srcPATH no -o $file
然后我就自己编译了下binutils,注意了一下
file=../../../binutils-2.15.91.0.2/bfd/po/`echo fr | sed 's,.*/,,'`.gmo \
&& rm -f $file && PATH=../srcPATH no -o $file
这里,原来正确的应该是
file=../../../binutils-2.15.91.0.2/bfd/po/`echo fr | sed 's,.*/,,'`.gmo \
&& rm -f $file && PATH=../srcPATH /usr/bin/msgfmt -o $file ../../../binutils-2.15.91.0.2/bfd/po/fr.po
在去查下,发现/usr/bin/msgfmt是属于gettext包的,于是就猜想出大概是你的主系统没有安装gettext,在
checking for msgfmt... (cached) /usr/bin/msgfmt
checking for gmsgfmt... (cached) /usr/bin/msgfmt
时返回的不是/usr/bin/msgfmt,可能是no吧。
于是才出现了&& rm -f $file && PATH=../srcPATH no -o $file
这就是发现问题的原因和解决过程。
如果不通过正确的编译binutils和错误的比较,应该不是很容易找到原因。
除非很了解编程。
 楼主| 发表于 2005-1-10 09:53:13 | 显示全部楼层
:thank  :thank  :thank  :2cool  :2cool  :2cool

好复杂...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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