|
发表于 2008-7-18 20:43:34
|
显示全部楼层
而在CLFS2.0中,第一遍编译gcc,也确实为了编译glibc,而这个glibc却不是工具链中要用的,这是目标系统用的(这一点也可以通过第六章中没有编译glibc的部分来间接验证),并不是为了第二次编译gcc,让gcc链接到这个glibc用的,而且gcc也不能链接到这个glibc上,因为第一遍编译的交叉版本的gcc来编译出的glibc必然是目标体系平台的代码,所以在当前的体系平台上是运行不起来的,如果第二次编译的gcc链接到这个glibc上,那么这个gcc也就不能在当前的体系平台上运行了,所以CLFS2.0在工具链阶段的两次编译gcc,不是为了让gcc连接到新编译的glibc上。
老大的这几句话还有些地方需要探讨。
如果说编译出的 glibc 没有用到第 2 次 gcc 的编译过程中,那么编译 glibc 和第 2 次 gcc 完全可以不分先后,但实际上是有先后的,所以它这样安排肯定有道理的。
我在实际编译的过程中,在编译出 glibc 以后,第 2 次编译 gcc 的时候,曾经出错提示是找不到相关的一些库,而我把生成的 glibc 目录下的 libc.so 文件修改后,第 2 次的 gcc 编译就过了,这说明第 2 次的 gcc 编译还是需要使用编译出的 glibc 的。
所以我的理解是这样的:
第 2 次编译 gcc 需要用到 glibc,但并不是说编译 gcc 的时候链接 glibc 的库,而是用它来完成一些设置或者是其它作用,因为如果链接了编译出的 glibc,那么它就无法在主机上运行,但缺了它又无法编译 gcc,所以才觉得要用,但用在哪儿现在还不是特别的清楚。
请老大们关注一下,这部分一直都是存在争议,现在想弄个定论出来。 |
|