Esto me ha estado molestando por un tiempo. ¿Cómo se compilan GCC y g ++?
Supongo que cada revisión se compila con una revisión previamente construida. ¿Es esto cierto? Y si es así, ¿significa que las versiones más antiguas de g ++ y GCC se escribieron en conjunto?
c++
c
compiler-construction
usuario1010005
fuente
fuente
Respuestas:
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:
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.
fuente
__DATE__
y__TIME__
que varían incluso entre invocaciones del mismo compilador) que GCC compilado con [GCC compilado con [otro]]; si no, eso es un error, y la construcción de arranque de 3 etapas está diseñada para captar eso.