Самая старая версия GCC была скомпилирована с использованием другого компилятора C, поскольку были и другие, когда она была написана.Самый первый в мире компилятор C (около 1973 года, IIRC) был реализован либо в сборке PDP-11 , либо в предшествующем ему языке программирования B, но в любом случае компилятор B был написан на ассемблере. Аналогично, первый в мире компилятор C ++ (CPre / Cfront , 1979-1983), вероятно, был сначала реализован в C, а затем переписан в C ++.
Когда вы компилируете GCCили любой другой автономный компилятор, полный порядок сборки:
- Сборка новой версии GCC с существующим компилятором C
- пересборка новой версии GCC с той, которую вытолько что построенный
- (необязательно) повторите шаг 2 для целей проверки.
Этот процесс называется bootstrapping .Он проверяет способность компилятора компилировать себя и проверяет, что полученный компилятор собран со всеми оптимизациями, которые он сам реализует.
EDIT : Дрю Дорманн в комментариях указывает на БьярнеРассказ Страуструпа о самой ранней реализации C ++ .Он был реализован на C ++, но переведен тем, что Страуструп называет «препроцессором» с C ++ на C;не полный компилятор по его определению, но C ++ был загружен в C.