Das Paket GCC enthält die GNU-Compiler Sammlung, die auch die C- und C++-Compiler beinhaltet.
Approximate build time: 11.7 SBU Required disk space: 294 MB
GCC ist abhängig von: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.
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.
Entpacken Sie die Archive GCC-core und GCC-g++ -- sie entpacken sich in den gleichen Ordner. Auf die gleiche Weise entpacken Sie bitte auch das GCC-Testsuite-Paket. Das vollständige GCC-Paket enthält noch weitere Compiler. Eine Anleitung, wie Sie diese installieren können, finden Sie unter http://www.linuxfromscratch.org/blfs/view/stable/general/gcc.html.
Vorerst installieren Sie nur den No-Fixincludes-Patch (und nicht den Specs-Patch!), den wir auch im vorigen Kapitel benutzt haben:
patch -Np1 -i ../gcc-3.3.3-no_fixincludes-1.patch
Wenden Sie nun einen Sed-Befehl an; dadurch wird die Installation von libiberty.a verhindert. Wir möchten die von Binutils bereitgestellte Version von libiberty.a verwenden:
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
Die GCC-Dokumentation empfiehlt, GCC nicht im Quellordner sondern in einem gesonderten Ordner zu kompilieren:
mkdir ../gcc-build cd ../gcc-build
Bereiten Sie nun GCC zum Kompilieren vor:
../gcc-3.3.3/configure --prefix=/usr \ --enable-shared --enable-threads=posix \ --enable-__cxa_atexit --enable-clocale=gnu \ --enable-languages=c,c++
Kompilieren Sie das Paket:
make
Die GCC-Testsuite in diesem Abschnitt wird als absolut kritisch betrachtet. Wir raten Ihnen, sie unter keinen Umständen zu überspringen.
Testen Sie das Ergebnis, aber halten Sie bei Fehlern nicht an (Sie erinnern sich an die paar bekannten):
make -k check
Die Anmerkungen zur Testsuite aus dem „GCC-3.3.3 - Durchlauf 2“ gelten auch hier noch. Schlagen Sie dort nach, falls Sie irgendwelche Zweifel haben.
Installieren Sie das Paket:
make install
Einige Pakete erwarten, dass der C-Präprozessor im Ordner /lib installiert ist. Um diesen Paketen Rechnung zu tragen, erzeugen Sie diesen symbolischen Link:
ln -s ../usr/bin/cpp /lib
Viele Pakete benutzen den Namen cc, um den C-Compiler aufzurufen. Um auch diesen Paketen Rechnung zu tragen, erzeugen wir einen weiteren symbolischen Link:
ln -s gcc /usr/bin/cc
An dieser Stelle ist es wichtig, den „Gesundheitscheck“, den wir schon früher durchgeführt haben, erneut laufen zu lassen. Schlagen Sie im „Erneutes Anpassen der Toolchain“ nach und wiederholen Sie den Test. Wenn das Ergebnis negativ ist, haben Sie möglichweise versehentlich den GCC-Specs-Patch aus Chapter 5 angewendet.
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
cpp ist der C-Präprozessor. Er wird von dem Compiler benutzt, um #include und #define und ähnliche Anweisungen im Quellkode durch ihren endgültigen Kode zu erweitern.
gcc ist der C-Compiler. Er wird verwendet, um den Quellkode eines Programmes in Assemblerkode umzuwandeln.
gccbug ist ein Shellskript, mit dem man gute Fehlerberichte erzeugen kann.
gcov ist ein Werkzeug zum Testen des Deckungsgrades. Es wird zum Analysieren von Programmen benutzt, um herauszufinden, wo Optimierungen den grössten Effekt zeigen.
libgcc* enthält Laufzeitunterstützung für gcc.
libstdc++ ist die Standard C++-Bibliothek. Sie enthält viele häufig genutzte Funktionen.
libsupc++ stellt Unterstützungsroutinen für die Programmiersprache C++ zur Verfügung.