LinuxSir.cn,穿越时空的Linuxsir!

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

checking whether the C compiler (gcc ) works... no<附带我的解决办法&am

[复制链接]
发表于 2008-1-28 13:02:37 | 显示全部楼层 |阅读模式
按照版主的建议,重新清理了一下思路.

在一空白分区上, 解压出做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> 难道跟第二遍的工具链调整,及编译参数有关?
 楼主| 发表于 2008-1-29 16:53:34 | 显示全部楼层
好像这个话题没有人愿意讨论?
我再也不愿意发帖了......继续潜水
回复 支持 反对

使用道具 举报

发表于 2008-1-29 19:04:21 | 显示全部楼层
看错了,一会儿再回复。。。
回复 支持 反对

使用道具 举报

发表于 2008-1-29 19:29:40 | 显示全部楼层
跟本看不懂问题又怎能去讨论呢?
回复 支持 反对

使用道具 举报

发表于 2008-1-29 21:40:14 | 显示全部楼层
看了下,好象是楼主的GCC的版本过久?
---
好象很难说得通,毕竟可以使用3.4的gcc编译4.3的版本。
---
应该说是在预工具链的问题。
当然很多人喜欢把这一次的编译的预工具链作为保留使用,这个方法很好。可是要注意使用顺序罢了。
---
T_T记得以前有为外国仁兄有个自动编译的工具链包,好怀念。、
机器慢,一定要留!!!
回复 支持 反对

使用道具 举报

发表于 2008-1-30 22:35:24 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2008-2-3 13:28:58 | 显示全部楼层
原来还有的,是地址改了而矣:

http://kerrek.linuxfromscratch.org/pub/lfs-tools/
回复 支持 反对

使用道具 举报

发表于 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> 难道跟第二遍的工具链调整,及编译参数有关?
回复 支持 反对

使用道具 举报

发表于 2008-2-3 14:47:58 | 显示全部楼层
Post by d00m3d;1813861
原来还有的,是地址改了而矣:

http://kerrek.linuxfromscratch.org/pub/lfs-tools/


d00m3兄
拜谢)))))))))))))))))))))))))))))))))))))))))))))))))))))))9
现在好了.终于没有借口不用LFS了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-9 11:40:17 | 显示全部楼层
谢谢 d00m3d 和 地球发动机 两位兄台!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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