LinuxSir.cn,穿越时空的Linuxsir!

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

求助:LFS6.2进行到5.7调整工具链时出错

[复制链接]
发表于 2007-12-17 17:57:47 | 显示全部楼层 |阅读模式
这是我第一次弄LFS版本是6.2,使用vmware5.0进行实验.前面做得都很顺利,但进行到5.7节:调整工具链时出错


从现在开始,所有程序都将连接到 /tools/lib 中的库文件。

下面要做的是修正 GCC 的"specs"文件,使它指向新的动态连接器。一个简单的 sed 命令就能做到:

SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs &&
gcc -dumpspecs > $SPECFILE &&
sed 's@^/lib/ld-linux.so.2@/tools&@g' $SPECFILE > tempspecfile &&
mv -vf tempspecfile $SPECFILE &&
unset SPECFILE

输完以上命令时回车有如下错误:
bashSPECFILE:ambiguous redirect

此时使用的时lfs用户在 /mnt/lfs/sources/glibc-build 目录下.
echo $PATH输出为:  /tools/bin:/bin:/usr/bin

做了如下测试:
echo 'main(){printf("hello world!\n");}' > dummy.c
cc dummy.c
readelf -l a.out | grep ': /tools'

没有错误也没输出语句.运行a.out可以打印出字符:hello world!
以下命令:
echo 'main(){printf("hello world!\n");}' > dummy.c
gcc dummy.c
readelf -l a.out | grep ': /tools'
结果和上面一样.

现在问题不知道出在哪里,有谁可以帮我看一下,还要什么信息请告知我,我第一时间提供,谢谢~!
 楼主| 发表于 2007-12-17 18:05:51 | 显示全部楼层
补充:没有找到specs文件,看了youbest兄的LFS速成手册上提到:工具链的调整方法有好几种,而且不同版本GCC的specs可能会有不同,但实际上都是把specs文件中的/lib/ld-linux.so.2替换成了/tools/lib/ld-linux.so.2,所以即使有些文章在调整工具链上的命令和LFS手册上的不一样也不用太奇怪,当然手工直接编辑specs文件也可以。但如果是GCC4.0.x的话可能不会自动产生specs文件,这时候可以先生成specs文件然后在修改   

想问一下如何生成specs文件,生成后一般在哪个目录下呢?
回复 支持 反对

使用道具 举报

发表于 2008-3-13 20:59:21 | 显示全部楼层
解决办法:
查看/mnt/lfs/tools/lib/gcc/i6860-pc-linux-gnu/4.0.3/specs,发现根本没有这个文件。
解决办法是执行"gcc -dumpspecs>/mnt/lfs/tools/lib/gcc/i6860-pc-linux-gnu/4.0.3/specs".
然后手动的编辑 specs 文件,只要把所有的"/lib/ld-linux.so.2"都替换成"/tools/lib/ld-linux.so.2"就行了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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