Desde la versión 4.8, el compilador de C ++ GCC (la parte de G ++) ya no está escrito en C, sino en C ++. Tengo una pregunta hipotética sobre esto.
Me pregunto cómo compilar el código C ++ de GCC en una nueva plataforma que aún no tiene compilador C ++. Por supuesto, puede usar binarios precompilados compilados en otras máquinas. O puede usar una versión anterior de GCC que se escribió en C y compilar la versión actual con ella.
Sin embargo, sin los binarios precompilados y solo la versión más nueva, estaba atrapado, ¿verdad? Si no es así, ¿hay otras implicaciones en esta situación planteadas por el cambio de C a C ++ del proyecto GCC?
gcc
antes de 4.8 se pudiera construir con el compilador de C empaquetado con un sistema operativo arbitrario (y eso lo restringiría a C89 en muchos).Respuestas:
Este es en realidad un concepto bien conocido llamado bootstrapping . Básicamente, existe, en algún lugar, una base de código C mínima para construir una versión de GCC que sea capaz de construir la base de código GCC actual. Los lenguajes de alojamiento propio han estado haciendo cosas así durante décadas.
fuente
gcc
ya no puede ser compilado por el compilador ac. La única garantía con las compilaciones de gcc que hacen es que gcc versión N se puede construir con gcc versión N-1.However, without prebuilt binaries and just the newest version, you were stuck, right? If not, are there other implications on this situation raised by the switch from C to C++ of the GCC project?
- presupone que no tiene acceso a versiones anteriores ni aborda las otras implicaciones del cambio de C a C ++ para la base de código.La creación de un compilador que está escrito en el mismo idioma que compila se llama bootstrapping . El artículo de wikipedia describe varias formas en que un compilador se puede iniciar.
Dada su restricción de que solo tiene un código fuente de G ++ posterior a 4.8 y no binarios precompilados para su plataforma de destino (sin compilador de C ++ existente), entonces el arranque del compilador de G ++ se puede hacer mediante compilación cruzada .
Cuando arranca un compilador mediante compilación cruzada, construye varias versiones de su compilador
Si tampoco tiene una PC (o similar) para realizar los pasos iniciales, entonces está atascado, pero la posibilidad de estar en esa situación e intentar arrancar un compilador es insignificante.
fuente