为什么GCC会自己编译3次?

问题描述 投票:0回答:1

我已经从源代码编译了GCC,但我似乎无法完全理解gcc自己进行3次编译的实用程序。

这有什么好处?

answer说:

  • 使用现有的C编译器构建GCC的新版本
  • 用刚构建的版本重新构建GCC的新版本
  • ((可选)重复步骤2以进行验证。

现在我的问题是,第一步完成后,编译器就会生成为什么要浪费时间重建它?

仅用于验证吗?如果是这样,这似乎很浪费。

事情变得更复杂over here

为此的构建比以前的软件包更复杂,因为您会将更多信息发送到configure脚本和make目标不是标准的。

我的意思是整个编译器都是用C语言编写的,所以为什么不一口气完成所有工作?

三相自举的用途是什么?

提前感谢。

gcc architecture compiler-construction bootstrapping
1个回答
0
投票
  • 阶段2和3.对编译器本身是一个很好的测试:它可以编译自身(通常还可以编译某些库,例如libgcclibstdc++-v3),然后它可以咀嚼不平凡的项目。

  • 在阶段2和3.中,您可以生成编译器不同的选项,例如,不优化(-O0)或不优化(-O2)。由于程序的输出/副作用不应取决于所使用的优化级别,因此即使编译器的二进制文件差别很大,任何一个编译器版本都必须产生相同的二进制文件。这是编译器的又一个(运行时测试)。

如果出于某种原因而希望使用非引导程序,请配置--disable-bootstrap

© www.soinside.com 2019 - 2024. All rights reserved.