这件事已经困扰我好一阵子了.GCC和g++自己是怎么编译的?
我猜每一个版本都是用以前的版本编译的.这是真的吗?如果是,是否意味着最古老的g++和GCC版本是用汇编编写的?
这件事已经困扰我好一阵子了.GCC和g++自己是怎么编译的?
我猜每一个版本都是用以前的版本编译的.这是真的吗?如果是,是否意味着最古老的g++和GCC版本是用汇编编写的?
最早的GCC版本是使用另一个C编译器编译的,因为在编写它时还有其他编译器.有史以来第一个C编译器(约1973年,IIRC)要么用PDP-11汇编语言实现,要么用之前的B编程语言实现,但无论如何,B编译器都是用汇编语言编写的<同样地,第一个C++编译器(cPRE/Cfront,1979-1983)可能首先在C中实现,然后在C++中改写.德尔>
编译GCC或任何其他自托管编译器时,构建的完整顺序为:
这个过程叫做bootstrapping.它测试编译器自身编译的能力,并确保生成的编译器是使用它自己实现的所有优化构建的.
EDIT:Drew Dorman在 comments 中指出了比亚恩·斯特劳斯图普对earliest implementation of C++人的描述.它是用C++实现的,但是Stroustrup称之为"预处理器"的翻译是从C++到C;不是定义的完全编译器,但仍然是C.中的C++.