GCC为什么需要编译两次才能完成自举
💡
原文中文,约2100字,阅读约需5分钟。
📝
内容提要
GCC编译器自举是通过自身语言编写编译器,以解决循环依赖问题。该过程需进行两次编译:第一次生成不完整的交叉编译器,第二次链接完整的glibc,最终构建功能齐全的libstdc++。自举过程包括准备环境、生成自举编译器和生成全功能编译器等步骤。
🎯
关键要点
- GCC编译器自举是用自身语言编写编译器,以解决循环依赖问题。
- 自举过程需进行两次编译,第一次生成不完整的交叉编译器,第二次链接完整的glibc。
- 自举的步骤包括准备环境、生成自举编译器和生成全功能编译器。
- 自举编译器是用该语言编写的编译器,最初由其他语言生成。
- 自举的一般步骤包括准备环境、生成自举编译器、生成全功能编译器和验证。
- 自举的好处包括对编译语言的测试和改进编译器后端。
- GCC需要两次编译是因为glibc、libgcc与libstdc++之间的循环依赖。
- 构建过程涉及build、host和target的定义。
- cc-pc是pc环境中的编译器,cc1是交叉编译器,cc-lfs是lfs环境中的编译器。
- GCC编译实现复杂,依赖于glibc和libgcc,需先构建降级版本再进行二次构建。
➡️