所以我已经从 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
然后我只等了 20 分钟。
我想我会在 prev-gcc
目录创建后继续终止 make 进程并使用那里的内容,但我想知道这个怪癖的原因是什么。就像 make 过程将完全工作的编译二进制文件移动到 objdir/prev-gcc
然后继续做一些看似很长的事情(我记得等待一整天才能完成一次)的原因是什么,或者我是这里遗漏了一些明显的东西。
最佳答案
如果您想禁用正常的 gcc 3 阶段引导过程(用自身重建编译器来测试东西),请使用 --disable-bootstrap
作为配置选项。这会将 Makefile 配置为只构建一次 gcc。
至于默认(bootstrap)进程在做什么:
- 使用系统编译器编译 gcc 以创建“stage1”编译器
- 使用 stage1 编译器重新编译所有内容以生成 stage2 编译器
- 使用 stage2 编译器重新编译所有内容以生成 stage3 编译器
- 比较 stage2 和 stage3 编译器(二进制文件)以确保它们相同。
如果最后一次检查失败,则说明构建过程出了问题。
关于c - gcc make 进程在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44276419/