我已经从源代码编译了GCC,但我似乎无法完全理解gcc
自己进行3次编译的实用程序。
这有什么好处?
此answer说:
- 使用现有的C编译器构建GCC的新版本
- 用刚构建的版本重新构建GCC的新版本
- ((可选)重复步骤2以进行验证。
现在我的问题是,第一步完成后,编译器就会生成为什么要浪费时间重建它?
仅用于验证吗?如果是这样,这似乎很浪费。
事情变得更复杂over here,
为此的构建比以前的软件包更复杂,因为您会将更多信息发送到configure脚本和make目标不是标准的。
我的意思是整个编译器都是用C语言编写的,所以为什么不一口气完成所有工作?
三相自举的用途是什么?
提前感谢。
阶段2和3.对编译器本身是一个很好的测试:它可以编译自身(通常还可以编译某些库,例如libgcc
和libstdc++-v3
),然后它可以咀嚼不平凡的项目。
在阶段2和3.中,您可以生成编译器不同的选项,例如,不优化(-O0
)或不优化(-O2
)。由于程序的输出/副作用不应取决于所使用的优化级别,因此即使编译器的二进制文件差别很大,任何一个编译器版本都必须产生相同的二进制文件。这是编译器的又一个(运行时测试)。
如果出于某种原因而希望使用非引导程序,请配置--disable-bootstrap
。