+ -
当前位置:首页 → 问答吧 → checking whether the C compiler (gcc ) works... no<附带我的解决办法>

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

时间:2008-01-28

来源:互联网

按照版主的建议,重新清理了一下思路.

在一空白分区上, 解压出做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> 难道跟第二遍的工具链调整,及编译参数有关?

作者: 357202171   发布时间: 2008-01-28

好像这个话题没有人愿意讨论?
我再也不愿意发帖了......继续潜水

作者: 357202171   发布时间: 2008-01-29

看错了,一会儿再回复。。。

作者: 晨想   发布时间: 2008-01-30

跟本看不懂问题又怎能去讨论呢?

作者: d00m3d   发布时间: 2008-01-30

看了下,好象是楼主的GCC的版本过久?
---
好象很难说得通,毕竟可以使用3.4的gcc编译4.3的版本。
---
应该说是在预工具链的问题。
当然很多人喜欢把这一次的编译的预工具链作为保留使用,这个方法很好。可是要注意使用顺序罢了。
---
T_T记得以前有为外国仁兄有个自动编译的工具链包,好怀念。、
机器慢,一定要留!!!

作者: SCys   发布时间: 2008-01-30

http://www.linuxsir.org/bbs/showthread.php?t=304487

不过服务好像已终止了

作者: d00m3d   发布时间: 2008-01-31

原来还有的,是地址改了而矣:

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

作者: d00m3d   发布时间: 2008-02-03

问题已经很明显了嘛。既然在/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

引用:
作者: 357202171
按照版主的建议,重新清理了一下思路.

在一空白分区上, 解压出做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-02-03

引用:
作者: d00m3d
原来还有的,是地址改了而矣:

http://kerrek.linuxfromscratch.org/pub/lfs-tools/
d00m3兄
拜谢)))))))))))))))))))))))))))))))))))))))))))))))))))))))9
现在好了.终于没有借口不用LFS了.

作者: SCys   发布时间: 2008-02-03

谢谢 d00m3d 和 地球发动机 两位兄台!!!

作者: 357202171   发布时间: 2008-02-09

我也遇到了同样的问题是LFS6.3出现了第二遍gcc-4.1.2.tar.bz2编译不通过

作者: linuxboys   发布时间: 2009-07-31