La versión más antigua de GCC se compiló utilizando otro compilador de C, ya que había otros cuando se escribió. El primer compilador de C (ca. 1973, IIRC) se implementó en el ensamblaje PDP-11 o en el lenguaje de programación B que lo precedió, pero en cualquier caso el compilador B se escribió en ensamblador.Del mismo modo, el primer compilador de C ++ (CPre / Cfront , 1979-1983) probablemente se implementó por primera vez en C y luego se reescribió en C ++.
Cuando compila GCC o cualquier otro compilador de alojamiento propio, el orden completo de compilación es:
- Cree una nueva versión de GCC con el compilador de C existente
- reconstruir una nueva versión de GCC con la que acabas de construir
- (opcional) repita el paso 2 para fines de verificación.
Este proceso se llama bootstrapping . Prueba la capacidad del compilador de compilarse a sí mismo y se asegura de que el compilador resultante esté construido con todas las optimizaciones que implementa.
EDITAR : Drew Dormann, en los comentarios, señala la cuenta de Bjarne Stroustrup de la implementación más temprana de C ++ . Fue implementado en C ++ pero traducido por lo que Stroustrup llama un "preprocesador" de C ++ a C; no es un compilador completo según su definición, pero aún así C ++ estaba en bootstrap en C.