Geschätzte Kompilierzeit: 4.4 SBU Ungefähr benötigter Festplattenplatz: 300 MB |
Das Paket GCC enthält die Gnu Compiler Sammlung, inklusive dem C und C++ Compiler.
Installierte Programme: c++, cc (Link auf gcc), cc1, cc1plus, collect2, cpp, g++, gcc, gccbug, und gcov
Installierte Bibliotheken: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] und libsupc++.a
GCC ist abhängig von: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.
Entpacken sie nur das GCC-core Tar-Archiv; wir werden erstmal keinen C++ Compiler brauchen.
Anmerkung: Auch wenn GCC ein wichtiges toolchain Paket ist werden wir die Test-suite in diesem frühen Stadium nicht durchlaufen lassen. Erstens ist die Test Umgebung noch nicht entsprechend vorbereitet und zweitens werden die nun kompilierten Programme sowieso von denen des zweiten Durchlaufes überschrieben.
Es ist bekannt, das dieses Paket nicht richtig funktioniert wenn die standard Optimierungseinstellungen (inklusive der -march und -mcpu Optionen) verändert wurden. Deshalb sollten sie event. gesetzte Umgebungsvariablen die die Standard Optimierung überschreiben - zum Beispiel CFLAGS und CXXFLAGS - für den Kompiliervorgang von GCC zurücksetzen oder entsprechend abändern.
Die GCC Dokumentation empfiehlt, GCC nicht im Quellenverzeichnis sondern in einem dazu dedizierten Verzeichnis zu kompilieren:
mkdir ../gcc-build cd ../gcc-build |
Bereiten sie GCC zum kompilieren vor:
../gcc-3.3.1/configure --prefix=/tools \ --with-local-prefix=/tools \ --disable-nls --enable-shared \ --enable-languages=c |
Die Bedeutung der configure Optionen:
--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 möchten wir mögliche Einflüsse aus dem Host-System vermeiden, daher ist diese Option hier wichtig.
--enable-shared: Dieser Schalter scheint hier erstmal nicht besonders klug. Aber durch ihn kompilieren wir sowohl libgcc_s.so.1 und 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 erziehlt. Beachten sie, das gcc selbst trotzdem statisch gelinkt wird, das wird durch den Wert -static zu BOOT_LDFLAGS im nächsten Schritt erreicht.
--enable-languages=c: Diese Option stellt sicher, das 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 Programme die im ersten Durchlauf erzeugt werden um sich selbst im zweiten Durchlauf erneut zu kompilieren. Dann kompiliert sich GCC noch ein drittes mal. Am Schluss werden die Ergebnisse des zweiten und dritten Kompiliervorgangs verglichen um sicherzustellen das GCC sich selbst problemlos kompilieren konnte. Das bedeutet normalerweise das alles korrekt kompiliert wurde.
Installieren sie das Paket:
make install |
Zum Abschluss erstellen wir noch den Symlink /tools/bin/cc. Viele Programme benutzen cc anstelle von gcc, das ist gedacht um Programme generisch zu halten und damit auf verschiedenen Unix System nutzbar zu machen. Nicht jeder hat den GNU C Compiler installiert. Einfach nur cc aufzurufen lässt dem Administrator die Wahl, welchen C Compiler er installieren möchte, solange es einen Symlink auf den echten Compiler gibt:
ln -sf gcc /tools/bin/cc |
Zurück | Zum Anfang | Weiter |
Installieren von Binutils-2.14 - Durchlauf 1 | Nach oben | Installieren der Linux-2.4.22 Header |