GCC-3.3.3

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.

Installieren von GCC

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
[Wichtig]

Wichtig

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
[Hinweis]

Hinweis

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.

Inhalt von GCC

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

Kurze Beschreibung

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.

g++ ist der C++-Compiler.

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.