Anleitung: GCC kompilieren und installieren

Welche Version des GCC habe ich installiert?

Die Frage beantwortet der Befehl gcc -v. Zu beachten ist allerdings, das manche Linux-Distributionen GCC-Versionen mitliefern, die nicht offizielle Änderungen gegenüber den Original-Versionen enthalten. Wenn man der GCC-Mailingliste mit so einer nicht-offiziellen GCC-Version einen Fehlerreport meldet, wird man wahrscheinlich aufgefordert werden, zunächst mal eine offizielle GCC-Version zu installieren.

Zum Zeitpunkt, als dieser Artikel geschrieben wurde, war übrigens die GCC-Version 3.3.1 aktuell.

Wann sollte ich den GCC selbst kompilieren und installieren?

Zunächst einmal: Alle Linux-Versionen liefern auf den Installiations-CDs auch eine GCC-Version mit; und auch für die meisten anderen Betriebssysteme gibt es binäre Versionen des GCCs, die man einfach installieren kann. Wenn man einfach nur einen Compiler braucht, ist die Installation eines solches GCCs wohl die einfachste Möglichkeit.

Wann ist es sinnvoll, den GCC selber zu kompilieren? Zum Beispiel, wenn man selber Software entwickelt und auf Fehler des Compilers stößt. Diese könnten durch neue Versionen des GCCs behoben werden. Ein zweites Beispiel ist, wenn man Portabilitätsfragen bei der Verbreitung von Software als Quellcode klären möchte: Programme, die mit älteren Versionen des GCC kompilieren, müssen dies mit neueren Versionen nicht tun, umgekehrt gilt das genauso. Mit binären GCCs ist man aber meist auf eine Version festgelegt und kann in diese Richtung nicht testen.

Manche Menschen kompilieren aus Neugier natürlich alle Software selber. Für denjenigen ist es natürlich einfach "Ehrensache", auch den Compiler selber zu kompilieren. So schwer ist das im Übrigen nicht.

Kompilieren und Installieren des GCCs - ein Kochrezept

Die folgende Zusammenfassung, wie man den GCC installiert, soll nicht die offizielle Installiationsanleitung ersetzen. Wie mir ist aber auch anderen aufgefallen, dass diese offizielle Anleitung für den Normal-Installierer etwas zu weit ins Detail geht. Daher folgt hier eine kochrezeptartige Anleitung.

Zunächst mal muss man sich dem Namen von drei Verzeichnissen überlegen:

  • SRC_DIR: Verzeichnis, in das das Quellpaket gcc-X.Y.Z.tar.gz entpackt wird.
  • OBJ_DIR: Verzeichnis, in dem das Kompilieren stattfindet.
  • DST_DIR: Verzeichnis, in das der GCC installiert wird.
Mein Vorschlag für SRC_DIR wäre /share/compile/gcc, für OBJ_DIR /share/compile/gcc-obj und für DST_DIR /usr/local/gcc-X.Y.Z.

Nun geht es an das eigentliche Installieren. Zunächst entpackt man die GCC Quelldateien, mit dem Befehl tar -xvzf gcc-X.Y.Z.tar.gz, und verschiebt sie nach SRC_DIR. Dann folgt folgendes:

  • # cd OBJ_DIR
  • # SRC_DIR/configure --prefix=DST_DIR ... (weitere Optionen)
  • # make bootstrap
  • # make install
Damit ist der GCC installiert; damit er auch automatisch im Pfad der Kommandozeile verfügbar ist, ist es sinnvoll, den Pfad um den Wert DST_DIR/bin zu erweitern. Dies geht mit dem folgenden Befehl: export PATH=DST_DIR/bin;$PATH. Ebenso sollte man den LD_LIBRARY_PATH um den Pfad erweitern, in dem die Bibliotheken des GCC installiert sind: export LD_LIBRARY_PATH=DST_DIR/lib;$LD_LIBRARY_PATH. Diese beiden Befehle sollten gegebenenfalls in die Datei /etc/profile (für alle Benutzer) oder ~/.profile (nur für einen Benutzer) aufgenommen werden. Durch diese Befehle, angewendet auf verschiedene GCC-Installiationsverzeichnisse, kann man auch sehr einfach zwischen verschiedenen Versionen des GCC hin- und herschalten.

An Optionen für den configure-Schritt fällt mir vor allem noch eine wichtige ein: mit --enable-languages=c,c++ wählt man die Compiler aus, die installiert werden sollen. Zur Auswahl stehen c, c++, java, ada, f77, und objc.

Was ist Bootstrapping?

Bootstrapping ist ein mehrstufiger Prozess zum Kompilieren eines Compilers. In der ersten Stufe wird der Compiler mit dem bisher auf dem System installierten Compiler kompiliert. In der zweiten Stufe kompiliert der neu kompilierte Compiler sich selbst. In der dritten Stufe kompiliert sich dieser neu kompilierte Compiler nochmals, und das Ergebnis wird mit dem vorher kompilierten Compiler verglichen. Die dritte Stufe ist also als Stresstest für den neuen Compiler zu verstehen: Wenn es hier keine Probleme gibt, ist der neue Compiler wohl in Ordnung.

All dies geschieht durch den Befehl make bootstrap. Auf langsamen Systemen kann das Bootstrapping eines GCC übrigens sehr lange dauern, zum Beispiel auf meinem Pentium 90 mehr als sieben Stunden.