什么是gcc make进程?

时间:2017-05-31 05:33:03

标签: c gcc makefile

所以我已经从gcc ftp服务器下载了gcc-7.1.0源代码存档,我已按照以下方式对其进行了配置:

../configure --enable-languages=c --disable-multilib

由于子目录是我提取源的地方。当前目录名为' objdir'。

现在,如果我在最初的5分钟之后运行make -j 2,现在只运行1~2,当我只修改项目中的单个源文件时 - CC1基本上就是我们正在编译的内容/在objdir/gcc中更新,总大小约为110MB - 一个完全可用的驱动程序,我可以使用/调试等。但是经过3或4秒后,这些文件被移动到objdir/prev-gcc然后我和#39我们只等了20分钟。

我想我会在创建prev-gcc目录后继续杀死制作过程并使用其中的内容,但我想知道这个怪癖的原因是什么。就像make进程将完全工作的已编译二进制文件移动到objdir/prev-gcc然后继续做一些看似非常(我记得等待一整天完成一次)的原因是什么原因或者我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:2)

如果要禁用正常的gcc 3阶段引导过程(使用自身重建编译器来测试内容),请使用--disable-bootstrap作为配置选项。这会将Makefile配置为只构建一次gcc。

至于默认(引导程序)进程正在做什么:

  • 使用系统编译器编译gcc以创建" stage1"编译器
  • 使用stage1编译器重新编译所有内容以生成stage2编译器
  • 使用stage2编译器重新编译所有内容以生成stage3编译器
  • 比较stage2和stage3编译器(二进制文件)以确保它们完全相同。

如果最后一次检查失败,则构建过程出现问题。