5.5. GCC-3.4.1 - Durchlauf 1

Das Paket GCC enthält die GNU-Compiler-Sammlung, die auch die C- und C++-Compiler beinhaltet.

Geschätzte Kompilierzeit: 4.4 SBU

Ungefähr benötigter Festplattenplatz: 300 MB

GCC ist abhängig von: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed und Texinfo

5.5.1. Installieren von GCC

Entpacken Sie nur den GCC-core Tarball; Sie brauchen zunächst weder den C++-Compiler noch die Testsuite.

Dieses Paket funktioniert nicht gut, wenn nicht die Standard Optimierungseinstellungen (inklusive der Optionen -march und -mcpu) benutzt werden. Deshalb sollten eventuell gesetzte Umgebungsvariablen, die die Standardoptimierung überschreiben - zum Beispiel CFLAGS und CXXFLAGS - für den Kompiliervorgang zurückgesetzt oder entsprechend abgeändert werden.

Die GCC-Dokumentation empfiehlt, GCC nicht im Quellordner sondern in einem gesonderten Ordner zu kompilieren:

mkdir ../gcc-build
cd ../gcc-build

Bereiten Sie GCC zum Kompilieren vor:

../gcc-3.4.1/configure --prefix=/tools \
    --libexecdir=/tools/lib --with-local-prefix=/tools \
    --disable-nls --enable-shared --enable-languages=c

Die Bedeutung der configure-Parameter:

--with-local-prefix=/tools

Der Sinn dieses Schalters ist es, /usr/local/include aus dem Suchpfad von gcc zu entfernen. Dies ist nicht absolut zwingend erforderlich, jedoch sollen mögliche Einflüsse aus dem Host-System vermieden werden, daher ist diese Option hier wichtig.

--enable-shared

Dieser Schalter scheint hier erstmal nicht besonders einleuchtend. Aber durch ihn kompilieren wir sowohl libgcc_s.so.1 als auch libgcc_eh.a, und die Präsenz von libgcc_eh.a stellt sicher, dass das configure-Skript für Glibc (das nächste zu kompilierende Paket) korrekte Ergebnisse erzielt. Beachten Sie, dass gcc selbst trotzdem statisch gelinkt wird; dies wird durch den Parameter -static in BOOT_LDFLAGS im nächsten Schritt erreicht.

--enable-languages=c

Diese Option stellt sicher, dass nur der C-Compiler gebaut wird. Diese Option wird nur benötigt, wenn Sie das komplette GCC-Archiv heruntergeladen und entpackt haben.

Fahren Sie mit dem Kompilieren des Pakets fort:

make BOOT_LDFLAGS="-static" bootstrap

Die Bedeutung der make-Parameter:

BOOT_LDFLAGS="-static"

Dies weist GCC an, seine Programme statisch zu verlinken.

bootstrap

Dieses make-Target kompiliert GCC nicht einfach nur, sondern kompiliert gleich mehrmals. GCC benutzt die im ersten Durchlauf erzeugten Programme, um sich damit im zweiten Durchlauf selbst zu kompilieren. Darauf folgt der dritte Kompiliervorgang. Abschließend werden die Ergebnisse des zweiten und dritten Kompiliervorgangs verglichen, um sicherzustellen, dass GCC sich selbst problemlos kompilieren konnte. Das bedeutet normalerweise, dass alles korrekt kompiliert wurde.

Der Kompiliervorgang ist nun abgeschlossen. Normalerweise würden Sie nun die Testsuite durchlaufen lassen, aber in diesem frühen Stadium ist die Testsuite-Umgebung (Tcl, Expect und DejaGNU) noch nicht verfügbar. Ausserdem macht es wenig Sinn, die Tests nun laufen zu lassen, weil die Programme aus dem ersten Durchlauf sehr bald durch die aus dem zweiten Durchlauf ersetzt werden.

Installieren Sie das Paket:

make install

Zum Abschluss erstellen Sie noch einen symbolischen Link. Viele Programme benutzen das Kommando cc anstelle von gcc; Das dient dem Zweck, die Programme generisch zu halten, damit sie auf verschiedenen Unix-Systemen verwendbar sind. Nicht jedes System hat den GNU C-Compiler installiert. Der Aufruf von cc lässt dem Administrator die Wahl, welchen C-Compiler er installieren möchte, solange ein symbolischer Link auf den echten Compiler verweist:

ln -s gcc /tools/bin/cc

Details zu diesem Paket finden Sie in Abschnitt 6.14.2, „Inhalt von GCC“