+ -
当前位置:首页 → 问答吧 → 求助:LFS6.2进行到5.7调整工具链时出错

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

时间:2007-12-17

来源:互联网

这是我第一次弄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

输完以上命令时回车有如下错误:
bash:$SPECFILE: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'
结果和上面一样.

现在问题不知道出在哪里,有谁可以帮我看一下,还要什么信息请告知我,我第一时间提供,谢谢~!

作者: ssiaqgpv   发布时间: 2007-12-17

补充:没有找到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文件,生成后一般在哪个目录下呢?

作者: ssiaqgpv   发布时间: 2007-12-17

解决办法:
查看/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"就行了。

作者: szjrabbit   发布时间: 2008-03-14