Seit Version 4.8 ist der C ++ - Compiler GCC (der G ++ - Teil davon) nicht mehr in C, sondern in C ++ selbst geschrieben. Ich habe eine hypothetische Frage dazu.
Ich frage mich, wie man den C ++ - Code von GCC auf einer neuen Plattform kompiliert, die noch keinen C ++ - Compiler hat. Natürlich können Sie vorgefertigte Binärdateien verwenden, die auf anderen Computern kompiliert wurden. Oder Sie können eine ältere Version von GCC verwenden, die in C geschrieben wurde, und die aktuelle Version damit kompilieren.
Ohne vorgefertigte Binärdateien und nur die neueste Version steckten Sie jedoch fest, oder? Wenn nicht, gibt es andere Auswirkungen auf diese Situation, die durch den Wechsel von C zu C ++ des GCC-Projekts entstehen?
gcc
vor 4.8 mit dem C-Compiler gebaut werden konnte, der mit einem beliebigen Betriebssystem gepackt war (und das würde Sie bei vielen auf C89 beschränken).Antworten:
Dies ist eigentlich ein bekanntes Konzept namens Bootstrapping . Grundsätzlich gibt es irgendwo eine minimale C-Codebasis, um eine Version von GCC zu erstellen, mit der die aktuelle GCC-Codebasis erstellt werden kann. Selbsthosting-Sprachen machen solche Dinge seit Jahrzehnten.
quelle
gcc
kann nicht mehr nur vom AC-Compiler erstellt werden. Die einzige Garantie für die von ihnen erstellten gcc-Kompilierungen besteht darin, dass die gcc-Version N mit der gcc-Version N-1 erstellt werden kann.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?
- Es setzt voraus, dass Sie keinen Zugriff auf frühere Versionen haben, und es werden auch nicht die anderen Auswirkungen des Wechsels von C zu C ++ auf die Codebasis angesprochen.Das Erstellen eines Compilers, der in derselben Sprache geschrieben ist, in der er kompiliert wird, wird als Bootstrapping bezeichnet . Der Wikipedia-Artikel beschreibt eine Reihe von Möglichkeiten, wie ein Compiler gebootet werden kann.
Angesichts Ihrer Einschränkung, dass Sie nur einen G ++ - Quellcode nach 4.8 und keine vorgefertigten Binärdateien für Ihre Zielplattform haben (kein vorhandener C ++ - Compiler), kann das Bootstrapping des G ++ - Compilers durch Cross-Compilation erfolgen .
Wenn Sie einen Compiler mithilfe der Cross-Kompilierung booten, erstellen Sie mehrere Versionen Ihres Compilers
Wenn Sie auch keinen PC (oder einen ähnlichen) haben, auf dem Sie die ersten Schritte ausführen können, stecken Sie zwar fest, aber die Wahrscheinlichkeit, in dieser Situation zu sein und zu versuchen, einen Compiler zu booten, ist vernachlässigbar.
quelle