|
发表于 2008-2-3 14:44:23
|
显示全部楼层
问题已经很明显了嘛。既然在/tools/bin下面有gcc,cc,那么它们就会被用到,因为/tools/bin排在搜索路径的前面。
那么为什么它会存在呢?显然是你之前解压出来的6.1工具链本身就有。
也就是说,如果你使用解压出来的工具链,就没有必要从第五章开始。直接进入第六章就好。即使这个GCC版本过时,一般来说也不要紧,因为第六章编出来的才是最终安装在LFS系统里面的版本。
如果想要以这个工具链为基础,重新生成一套6.2的工具链,那么你就不能使用原有的目录名,并且要将改名的目录放在PATH变量里。
例如:如果你把6.1工具链解压到$LFS/oldtools,然后创建/oldtools指向它,那么你需要这样写PATH:
PATH=/tools/bin:/oldtools/bin:/bin:/usr/bin
Post by 357202171;1811935
按照版主的建议,重新清理了一下思路.
在一空白分区上, 解压出做LFS 6.1 的工具链.
现在 : 我想利用6.1的工具链 做LFS-6.2. 但我发现6.1的工具链中的GCC版本有点过时,想把它升级成GCC 4.0 . 升级的步骤按照LFS-BOOK 6.2 第五章第一节开始做的.开始编译 Binutils 时出现如下错误.
checking whether the C compiler (gcc ) works... no ....
跳过Binutils, 直接编译GCC 4.0 时也出现同样错误.
解决办法如下:
由于我做6.1的LFS已经成功且可以启动,所以不是主系统及工具链的问题.
留意了一下lfs用户的PATH
/tools/bin:/bin:/usr/bin
会不会是从/tools/bin 里面读取gcc和cc命令呢...在第一遍的时候应该调用系统的编译器阿?
进入/LFS/tools/bin
发现有 gcc cc 这两个命令.
mv gcc gcc-bak
mv cc cc-bak
重新编译.问题解决.
回到问题,
1:为什么会出现这个错误?
2:哪些条件可以引起此类错误?
3:做第六节时同样调用tools里面的编译器,为什么可以通过,而这儿不行?
对于上述问题的答案,我的想法如下,错误的地方,还请兄弟们指正.
1> 在lfs中已经指定了PATH为 /tools/bin:/bin:/usr/bin , 当configure 找到/tools/bin中的gcc命令后, 立即对它进行测试.但测试失败. 为什么失败 ?
主系统为:: gcc version 3.4.6 20060404 (Red Hat 3.4.6-8)
tools(工具链) 中安装的是 GCC3.4.3 .
3> 难道跟第二遍的工具链调整,及编译参数有关? |
|