+ -
当前位置:首页 → 问答吧 → 能不能解释一下什么是循环依赖问题?

能不能解释一下什么是循环依赖问题?

时间:2009-04-04

来源:互联网

看了手册还是不是很懂,循环依赖问题的关键到底是什么?

为什么在切换虚拟根系统前的顺序是
->Binutils -> Gcc -> Glibc -> Gcc -> Binutils

而切换根系统后可以直接
->Glibc -> Binutils -> Gcc

如果Glibc可以自给自足的话为什么第一次不是第一个编译呢?

作者: xxdaystar   发布时间: 2009-04-04

先谢谢大家了 dd

作者: xxdaystar   发布时间: 2009-04-04

鸡生蛋,蛋生鸡。
是先有鸡,还是先有蛋?

作者: 聚焦深空   发布时间: 2009-04-04

引用:
作者: 聚焦深空
鸡生蛋,蛋生鸡。
是先有鸡,还是先有蛋?
照你这样说 顺序可以调整吗 调整完是怎样?

想不通Glibc不是程序应该不会有依赖问题,为什么要在其前面先编译binutils和gcc呢

作者: xxdaystar   发布时间: 2009-04-04

没有鸡,那来的蛋?

作者: 聚焦深空   发布时间: 2009-04-04

但为什么切换根系统后可以直接
->Glibc -> Binutils -> Gcc

不也是一个新的环境吗

作者: xxdaystar   发布时间: 2009-04-04

没有蛋,那来的鸡?

作者: 聚焦深空   发布时间: 2009-04-04

faint,那宿主系统不可以作为鸡吗

作者: xxdaystar   发布时间: 2009-04-04

说得越来越糊涂了,不知道循环依赖到底是依赖什么,gblic吗? gblic要不要依赖?

作者: xxdaystar   发布时间: 2009-04-04

瞧,您不是已经明白啦。

作者: 聚焦深空   发布时间: 2009-04-04

就是不明白啊,我的问题还是停留在1楼的问题上,循环依赖问题的关键到底是什么,是Gblic吗,Glibc要不要依赖呢,照理说应该不用依赖因为它不是程序,但这样理解的话为什么在在切换虚拟根系统前的顺序是
->Binutils -> Gcc -> Glibc -> Gcc -> Binutils
即为什么不把Glic放在第一位呢?

而在切换完根后又可以直接
->Glibc -> Binutils -> Gcc

这时Glibc没有依赖问题吗?

不管怎样 谢谢你

作者: xxdaystar   发布时间: 2009-04-04

自举
凑字

作者: ch_fb   发布时间: 2009-04-04

个人理解是为了保证系统的纯净。
glibc虽然是自满足的,但是编译glibc 也需要binutils和gcc,为了保证toolchains尽可能不受到host系统的影响,所以先安装binutils和gcc。
不知道你是不是用livecd来制作lfs的,如果你制作的lfs和livecd的版本一致的话,这样的步骤大概影响不大,因为host中的binutils和gcc都和目标系统的版本一致,也许可以省掉第一次的binutils和gcc(我猜的,没实验过)。

作者: ccagg   发布时间: 2009-04-05

楼上说得挺有道理的,我今天再看了一下手册发现以前看得很不仔细,编译时使用的gcc的确会对gblic造成可能的影响(一些功能的开启),至于第二次可以直接编译glibc我想是因为 ‘中间系统’ 的gcc是新的,而且配置成所要求的,所以没必要了。同理,如果宿主系统的gcc也一样的话应该是可以的。我也是猜测的。

至于第一次时binutils为什么要在gcc前面,我想是不是有一些复杂的原因。实际上ld应该算是编译了5次。

作者: xxdaystar   发布时间: 2009-04-05

又看了一遍手册里关于toolchain的描述,第五章里提到的顺序是:
binutils-->gcc-->libc-->gcc-->binutils
总觉得,最后这2个包的顺序貌似没多大关系。
如果是:
binutils-->gcc-->libc-->binutils-->gcc
好像也没什么影响。

这样的想法对吗?

作者: ccagg   发布时间: 2009-04-15

热门下载

更多