LinuxSir.cn,穿越时空的Linuxsir!

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

为什么gcc与binutils要编译两次呢?

[复制链接]
发表于 2006-1-18 12:00:20 | 显示全部楼层 |阅读模式
在构建临时编译环境时,为什么gcc与binutils要编译两次呢?编译一次行吗?
不好意思,刚接触LFS.
发表于 2006-1-18 12:28:27 | 显示全部楼层
为了脱离主系统的影响,因为后面要chroot到tools下,所以必须和主系统进行脱离才行.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-18 13:24:27 | 显示全部楼层
我想“编译一次”好像也可以和主系统进行脱离,希望说得详细些。编译一次,为什么就不行?
回复 支持 反对

使用道具 举报

发表于 2006-1-18 19:50:10 | 显示全部楼层
Post by sam1998
我想“编译一次”好像也可以和主系统进行脱离,希望说得详细些。编译一次,为什么就不行?
不要用你想,说什么要拿出证据.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-18 22:43:23 | 显示全部楼层
Post by viiv
不要用你想,说什么要拿出证据.

我没有什么证据,既然编译两次肯定有他的道理,希望那位能解释得清楚一些。比如有哪些依赖关系等。
回复 支持 反对

使用道具 举报

发表于 2006-1-19 12:35:37 | 显示全部楼层

co-ask

为了使lfs的系统有bin,gcc等编译器,在host机器上把src编译成二进制码到lfs上不就行了,
所谓chroot的更好的脱离,讲的太模糊,是不能服众的。。。。
回复 支持 反对

使用道具 举报

发表于 2006-1-19 16:57:49 | 显示全部楼层
你可以试试只做一次,:)。也不一定是不行的。
回复 支持 反对

使用道具 举报

发表于 2006-1-19 20:05:30 | 显示全部楼层
一次的话就是cross-complie,两次的话就是chroot compile,从原理上讲,cross compile比chroot compile受主系统的影响大一些,因为主系统的gcc,glibc,kernel版本在不同用户那里是不一样的。其实 chroot compile也会受主系统的影响,因为内核只编译了一次,无法同时加载两个内核。如果说能用某种方法,同时加载两个内核,一个是主系统用的,一个是编译LFS用的,那才可以说是真正的一点影响都没有。所以现在的lfs,只包含一些基本的编译工具,为的就是在进入LFS后加载它的内核,进行进一步的编译。
回复 支持 反对

使用道具 举报

发表于 2006-1-19 20:43:12 | 显示全部楼层
不是吧,这里说的一次,只是说第五章的gcc/binutils的编译,要编译2次,不是说 Cross compile。

Cross compile也许会有影响,但是我现在还没感觉出来,我就是用 lfs7 的。host 是 LFS livecd。
回复 支持 反对

使用道具 举报

发表于 2006-1-19 20:45:00 | 显示全部楼层
cross-complie中gcc与glibc也要编译两遍.
回复 支持 反对

使用道具 举报

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

本版积分规则

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