LinuxSir.cn,穿越时空的Linuxsir!

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

求助各位: LFS6.3 第一步binutils编译就报错,极其郁闷!先谢过!

[复制链接]
发表于 2009-1-3 10:21:42 | 显示全部楼层 |阅读模式
报错/tools/bin/ld: unrecognized option '--hash-style=both',   
(注:CC="gcc -B/usr/bin" 搞不定)

lfs版本: lfslivecd-x86-6.3-r2160.iso
宿主机编译器:gcc version 4.2.4 (Ubuntu 4.2.4-1ubuntu1)
宿主机:kbuntu 8.04 (2.6.24-21-generic)

完整操作如下:
CC="gcc -B/usr/bin/" ../binutils-2.17/configure --prefix=/tools --disable-nls
make
make install
make -C ld clean
make -C ld LIB_PATH=/tools/lib

完整错误信息如下:

lfs@wood-desktop:/media/lfs/sources/binutils-build$ make -C ld LIB_PATH=/tools/lib
make: Entering directory `/media/lfs/sources/binutils-build/ld'
Making info in po
make[1]: Entering directory `/media/lfs/sources/binutils-build/ld/po'
make[1]: Nothing to be done for `info'.
make[1]: Leaving directory `/media/lfs/sources/binutils-build/ld/po'
make[1]: Entering directory `/media/lfs/sources/binutils-build/ld'
make[1]: Nothing to be done for `info-am'.
make[1]: Leaving directory `/media/lfs/sources/binutils-build/ld'
make  all-recursive
make[1]: Entering directory `/media/lfs/sources/binutils-build/ld'
Making all in po
make[2]: Entering directory `/media/lfs/sources/binutils-build/ld/po'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/media/lfs/sources/binutils-build/ld/po'
make[2]: Entering directory `/media/lfs/sources/binutils-build/ld'
/bin/sh ./libtool --mode=link gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2    -o ld-new  ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o eelf_i386.o ei386linux.o  ../bfd/libbfd.la ../libiberty/libiberty.a
gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2 -o ld-new ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o eelf_i386.o ei386linux.o  ../bfd/.libs/libbfd.a ../libiberty/libiberty.a
/tools/bin/ld: unrecognized option '--hash-style=both'
/tools/bin/ld: use the --help option for usage information
collect2: ld returned 1 exit status
make[2]: *** [ld-new] Error 1
make[2]: Leaving directory `/media/lfs/sources/binutils-build/ld'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/media/lfs/sources/binutils-build/ld'
make: *** [all] Error 2
make: Leaving directory `/media/lfs/sources/binutils-build/ld'
lfs@wood-desktop:/media/lfs/sources/binutils-build$
发表于 2009-1-3 17:19:23 | 显示全部楼层
我几天前先用Ubuntu 8.10做LFS,也是到binutils pass1的时候就编译失败,现在换用fedora10,就一切正常,已经到6.29automake了,估计是Ubuntu少装了什么包,具体搞不懂

建议用fedora试试
回复 支持 反对

使用道具 举报

发表于 2009-1-3 18:08:54 | 显示全部楼层
seems ubuntu doesn't have a whole compiled environment.
it's no problem as lfs-livecd was used.
回复 支持 反对

使用道具 举报

发表于 2009-1-3 23:41:35 | 显示全部楼层
使用livecd 进行第一轮编译,会比较简单吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-3 23:57:03 | 显示全部楼层
多谢各位答复。我现在换了一个6.2.5版本。宿主还是在kbuntu8.04下做,问题没有了,现在已经执行到6.11步骤了。我猜想6.3版本应该也是可以成功的。6.3之所以失败,我怀疑是我自己的操作导致:

我原先没有加CC="gcc -B/usr/bin",来执行configure,这时肯定失败。后来我在网上搜索到帖子说需要加“CC="gcc -B/usr/bin"",我就执行了一把 make clean,再执行者CC="gcc -B/usr/bin" ../configure 这句话,我怀疑这个操作没有生效。我应该把整个binutils-build目录删除干净,再执行 CC="gcc -B/usr/bin" ../configure 这句话。这样估计就没有问题了。
回复 支持 反对

使用道具 举报

发表于 2009-1-4 00:54:06 | 显示全部楼层
Post by wuqixuan;1933610
多谢各位答复。我现在换了一个6.2.5版本。宿主还是在kbuntu8.04下做,问题没有了,现在已经执行到6.11步骤了。我猜想6.3版本应该也是可以成功的。6.3之所以失败,我怀疑是我自己的操作导致:

我原先没有加CC="gcc -B/usr/bin",来执行configure,这时肯定失败。后来我在网上搜索到帖子说需要加“CC="gcc -B/usr/bin"",我就执行了一把 make clean,再执行者CC="gcc -B/usr/bin" ../configure 这句话,我怀疑这个操作没有生效。我应该把整个binutils-build目录删除干净,再执行 CC="gcc -B/usr/bin" ../configure 这句话。这样估计就没有问题了。



编译不加CC="gcc -B/usr/bin" ??
你难道不是按手册上说的去做吗 ?
回复 支持 反对

使用道具 举报

发表于 2009-1-4 09:00:44 | 显示全部楼层
LFS一开始有一个version-check.sh的脚本,详见:iv. Host System Requirements
你在宿主系统运行这个脚本可以看看宿主系统的相关软件版本是否都符合要求。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-4 20:22:51 | 显示全部楼层
Post by dong99;1933633
编译不加CC="gcc -B/usr/bin" ??
你难道不是按手册上说的去做吗 ?


Linux From Scratch BOOK 上面没有说要加CC="gcc -B/usr/bin"呀?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-1-4 20:25:37 | 显示全部楼层
Post by ti8er;1933672
LFS一开始有一个version-check.sh的脚本,详见:iv. Host System Requirements
你在宿主系统运行这个脚本可以看看宿主系统的相关软件版本是否都符合要求。


请我这个文件在光盘的哪个目录下?我没有找到。
回复 支持 反对

使用道具 举报

发表于 2009-1-4 21:10:22 | 显示全部楼层
Post by wuqixuan;1934009
请我这个文件在光盘的哪个目录下?我没有找到。

http://www.linuxfromscratch.org/ ... logue/hostreqs.html

cat > version-check.sh << "EOF"
#!/bin/bash
export LC_ALL=C

# Simple script to list version numbers of critical development tools

bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -> `readlink -f /bin/sh`"
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -e /usr/bin/yacc ];
  then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
  else echo "yacc not found"; fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -e /usr/bin/awk ];
  then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
  else echo "awk not found"; fi
gcc --version | head -n1
/lib/libc.so.6 | head -n1 | cut -d" " -f1-7
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1
echo 'main(){}' > dummy.c && gcc -o dummy dummy.c
if [ -x dummy ]; then echo "Compilation OK";
  else echo "Compilation failed"; fi
rm -f dummy.c dummy

EOF

bash version-check.sh
回复 支持 反对

使用道具 举报

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

本版积分规则

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