|
楼主 |
发表于 2007-4-8 15:47:30
|
显示全部楼层
晨想版主,不好意思,浪费你时间了!问题已经解决了!的确如hans_yu大侠所说的,是“5.12. Binutils-2.16.1 - 第二遍”中make -C ld LIB_PATH=/usr/lib:/lib出问题了!我是先把手册手抄下来,然后再手工打命令的!命令没打错,是手抄错了,把
make -C ld LIB_PATH=/usr/lib:/lib抄成make -C ld LIB_PATH=/usr/bin:/lib了,所以才会出现这种情况!
对于这个问题,我总结了一下,在这里我想说一点个人的小想法,好让其他象我一样的初学者在遇到这种情况时,有个参照,不要一片茫然:
在整个LFS过程中,binutils软件包一共编译了3次,分别是:“5.3. Binutils-2.16.1 - 第一遍”“5.12. Binutils-2.16.1 - 第二遍”“6.11. Binutils-2.16.1”!最后一次,即6.11是最终LFS系统的组成部分,我们可以只当它和其他软件包一样去安装!而前两次则是临时工具链里的组成部分,一旦编译出错,将影响后面的操作无法继续下去!在我看来,binutils的前两次编译安装分别对应于2次调整工具链!
就象“5.3. Binutils-2.16.1 - 第一遍”中的
make -C ld clean
make -C ld LIB_PATH=/tools/lib
cp -v ld/ld-new /tools/bin
是为后面"调整工具链"步骤准备连接器!
而“5.12. Binutils-2.16.1 - 第二遍”中的
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin
是为第六章的"再次调整工具链"阶段配置连接器!
事实上,我们在编译安装完binutils后,先不rm掉"binutils-2.16.1"和"binutils-build"这2个目录,在这个前提下,我们完全可以将
make -C ld clean
make -C ld LIB_PATH=/tools/lib
cp -v ld/ld-new /tools/bin
这3个命令放到“5.7. 调整工具链”这里来执行,对应的
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin
这3个命令放到“6.10. 再次调整工具链”这里来执行,即在执行“6.10. 再次调整工具链”里的mv -v /tools/bin/{ld,ld-old}之前,先cd /sources/binutils-build后,
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin
最后才mv -v /tools/bin/{ld,ld-old}!这样才使命令看起来象一个“整体”,完成一个步骤!这样一来,对于那些对系统,对LFS命令的含义,作用还不是很理解的新手们来说,能一目了然的知道那3句命令是干什么的,一旦出错了,也能“就近”的检查到出错的地方!
而6.2手册中将这3句命令分开,放到相距很远的章节中去执行,同样是出于对新手的照顾,使操作统一,即tar一个软件包后,编译安装完后就可以rm掉,以防后面要编译到同一软件包时因没删除之前编译过的源码目录而出错!
但我想说的是,将原本一体的命令分开执行,对于新手的我们来说,事实上是增加了理解命令含义,用途的难度,而且查错时也难了很多!最简单的例子:就象我一样“5.12. Binutils-2.16.1 - 第二遍”中的make -C ld LIB_PATH=/usr/lib:/lib出错了,但不会有什么提示,且这句命令生成的ld程序,得到“6.10. 再次调整工具链”才用到,这个时候你才会发现问题,如果象我一样没什么经验,或对系统理解不深,是不可能想到是在“5.12. Binutils-2.16.1 - 第二遍”中出的问题的,所以只能重来!(在这个问题上,我重新LFS了4次)不过,幸运的是由于这样才加深了我对这个问题的看法:)
以上是我个人的理解,做为LFS新手,很多理解都有局限性的,希望各位高手们能帮着纠正,多给点意见,提示:)
在这里再次感谢晨想版主以及hans_yu大侠的帮助! |
|