GCC为什么需要编译两次才能完成自举
💡
原文中文,约2000字,阅读约需5分钟。
📝
内容提要
本文介绍了编译器自举的概念和步骤,以及GCC为什么需要进行两次编译的原因。自举可以通过吃自己的狗粮的方式对正在编译的语言进行测试,同时可以在当前编译的高级编程语言上进行编译器的开发。GCC需要进行两次编译是因为它包含了很多辅助的工具和库,需要先编译出一个降级的libgcc和交叉编译器cc1,然后再进行二次构建才能得到功能完整的libstdc++。
🎯
关键要点
- 编译器自举是一种自生成编译器的技术,最初的核心编译器由其他编程语言生成。
- 自举的一般步骤包括准备工作环境、生成自举编译器、使用自举编译器生成全功能编译器以及重新开始以添加新功能。
- 自举的好处包括对编译语言的测试、简化开发人员的工作、在高级编程语言上进行开发以及全面的一致性检查。
- GCC需要进行两次编译是因为它包含很多辅助工具和库,首先需要编译出降级的libgcc和交叉编译器cc1。
- 在LFS环境中,cc1用于构建glibc,而后续的cc-lfs用于构建功能完整的libstdc++,确保编译器的正确性。
➡️