LinuxSir.cn,穿越时空的Linuxsir!

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

关于GCC等的多次编译

[复制链接]
发表于 2009-7-3 00:17:26 | 显示全部楼层 |阅读模式
大家好,我刚刚接触LFS不久...

看了金先生的手册翻译(基于LFS手册6.2) 也看了豹哥的诸多大作(包括“手把手” “反向分析”等)

但有一个问题我始终没法理解,也让我这两天很头疼:
为什么binutils、gcc等需要编译多次呢?(豹哥实在不好意思,你的那个反向分析我没看太懂)
发表于 2009-7-6 14:14:19 | 显示全部楼层
我的理解是这样的
1。源系统的GCC借用源系统的glibc制作一个残疾GCC(内部GLIBC库是残疾的)
2。此残疾GCC可以编译出纯净的目标系统glibc库  因为制作GLIBC不会用到残疾GCC中的残疾部分(源系统的GLIBC库)
3。源系统的GCC加目标系统的glibc库制作出  完美GCC(内部GLIBC库是目标系统的库)
4。用此完美GCC编译出完美binutils
回复 支持 反对

使用道具 举报

发表于 2009-7-9 09:23:57 | 显示全部楼层
我的在第三次编译GCC4.1.2时就出错,现在还找不到原因
回复 支持 反对

使用道具 举报

发表于 2009-7-9 10:57:39 | 显示全部楼层
为何不直接用源系统的gcc编译出目标系统的glibc,再用源系统的gcc和目标系统的glibc编译新的gcc,此gcc就可编译其它新东西。这样不是很直接吗?
回复 支持 反对

使用道具 举报

发表于 2009-7-10 17:38:15 | 显示全部楼层
Post by ch_fb;2004696
为何不直接用源系统的gcc编译出目标系统的glibc,再用源系统的gcc和目标系统的glibc编译新的gcc,此gcc就可编译其它新东西。这样不是很直接吗?


如果软件的版本都不变,只是为了优化编译的话,个人认为可以在源系统上编译。
回复 支持 反对

使用道具 举报

发表于 2009-7-21 22:47:00 | 显示全部楼层
Post by hritian;2005091
如果软件的版本都不变,只是为了优化编译的话,个人认为可以在源系统上编译。


这是极高危的动作,请先做好系统备份才行事!
回复 支持 反对

使用道具 举报

发表于 2009-7-22 02:15:18 | 显示全部楼层
Post by heuyck;2004069
我的理解是这样的
1。源系统的GCC借用源系统的glibc制作一个残疾GCC(内部GLIBC库是残疾的)
2。此残疾GCC可以编译出纯净的目标系统glibc库  因为制作GLIBC不会用到残疾GCC中的残疾部分(源系统的GLIBC库)
3。源系统的GCC加目标系统的glibc库制作出  完美GCC(内部GLIBC库是目标系统的库)
4。用此完美GCC编译出完美binutils


heuyck兄这段话非常形象啊
回复 支持 反对

使用道具 举报

发表于 2009-8-2 16:11:57 | 显示全部楼层

疑问

Post by heuyck;2004069
我的理解是这样的
1。源系统的GCC借用源系统的glibc制作一个残疾GCC(内部GLIBC库是残疾的)
2。此残疾GCC可以编译出纯净的目标系统glibc库  因为制作GLIBC不会用到残疾GCC中的残疾部分(源系统的GLIBC库)
3。源系统的GCC加目标系统的glibc库制作出  完美GCC(内部GLIBC库是目标系统的库)
4。用此完美GCC编译出完美binutils


提出个疑问啊,你提到“4。用此完美GCC编译出完美binutils”,但是LFSbook上,第二阶段是先编译的binutils,再编译GCC。怎么解释呢?
回复 支持 反对

使用道具 举报

发表于 2009-8-4 10:26:10 | 显示全部楼层
在LFS原理一文中有提到,其实工具链的GCC可以先用host系统先编译glibc再一次编译好GCC的,但LFS不这么做,主要是从稳定并与host系统断开任何可知及不可预测的连系。
回复 支持 反对

使用道具 举报

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

本版积分规则

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