|
文章接近结尾地方有这么一段话:
....下面的问题就是这个工具链是如何来的呢?
这个问题就要回到前面所提到的工具链运行时所依赖的环境,还是这个glibc,
要编译这个glibc必须是在工具链的编译工具生成之前,而工具链的编译工具又依赖于glibc,
那么这个glibc就不能是现在工具链中的编译工具编译出来的,那么是谁编译的呢?
这个问题的答案:当然还是编译器编译的这个glibc和工具链里的编译工具,
也就是说在工具链中的编译工具编译目标系统之前需要另一个编译器来编译这个在使用的工具链中的
编译器和编译器所依赖的glibc。.......
如何理解呢?
网上有篇文章<LFS构造原理的分析>中写道:
......为什么要将Bintuils和Gcc编译两次,可以直接用宿主系统?
第一次编译bintuils和Gcc的目的一方面是为了编译Glibc;
另一方面是为了能自己编译出第二遍的Gcc,即使得Gcc是自我编译的。
如果直接使用宿主系统可以满足编译Glibc的要求,但是Gcc就不是自我编译了。
这里为了保证制造的正确性以及使Gcc是自我编译.......
而论坛上有说如果gcc编译器的版本同src的版本时,bootstrap就没有必要,既然自我编译没有必要,
而直接使用宿主系统可以满足编译Glibc的要求,那么gcc就不需要pass 1这一步了,直接用host编译glibc就
可以了。
哪个才是正确的理解呢? |
|