6.14. GCC-3.4.3

Das Paket GCC enthält die GNU-Compiler-Sammlung. Darin sind die C- und C++-Compiler enthalten.

Geschätzte Kompilierzeit: 11.7 SBU
Ungefähr benötigter Festplattenplatz: 451 MB
Die Installation ist abhängig von: Bash, Binutils, Coreutils, Diffutils, Findutils, Gawk, Gettext, Glibc, Grep, Make, Perl, Sed und Texinfo

6.14.1. Installation von GCC

Dieses Paket funktioniert unter Umständen nicht fehlerfrei, wenn die voreingestellten Optionen für Compiler-Optimierungen übergangen werden. (Dazu gehören auch -march und -mcpu.) Daher sollten die entsprechenden Umgebungsvariablen (wie z. B. CFLAGS und CXXFLAGS) für den Kompiliervorgang zurückgesetzt oder entsprechend abgeändert werden.

Vorerst installieren Sie nur den No-Fixincludes-Patch (nicht den Specs-Patch!), den Sie auch im vorigen Kapitel benutzt haben:

patch -Np1 -i ../gcc-3.4.3-no_fixincludes-1.patch

In Kombination mit der neuen Version von Binutils hat GCC Probleme beim Kompilieren einiger Programme, die nicht zur LFS-Installation gehören (z. B. Mozilla und kdegraphics). Mit dem folgenden Patch wird das Problem behoben:

patch -Np1 -i ../gcc-3.4.3-linkonce-1.patch

Wenden Sie nun einen Sed-Befehl an um die Installation von libiberty.a zu verhindern. Wir möchten die von Binutils bereitgestellte Version von libiberty.a verwenden:

sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in

Die Dokumentation zu GCC empfiehlt, GCC außerhalb des Quellordners zu kompilieren:

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

Bereiten Sie GCC zum Kompilieren vor:

../gcc-3.4.3/configure --prefix=/usr \
    --libexecdir=/usr/lib --enable-shared \
    --enable-threads=posix --enable-__cxa_atexit \
    --enable-clocale=gnu --enable-languages=c,c++

Kompilieren Sie das Paket:

make
[Wichtig]

Wichtig

In diesem Abschnitt wird die Testsuite als absolut kritisch betrachtet. Sie sollten diesen Schritt unter keinen Umständen überspringen.

Testen Sie die Ergebnisse, aber halten Sie bei Fehlern nicht an:

make -k check

Einige Fehler sind bekannt und wurden schon im vorigen Kapitel bemerkt. Die Anmerkungen aus Abschnitt 5.11, „GCC-3.4.3 - Durchlauf 2,“ sind hier immer noch gültig. Blättern Sie zurück, wenn nötig.

Installieren Sie das Paket:

make install

Einige Pakete erwarten, dass der C-Präprozessor unter /lib installiert ist. Erstellen Sie daher 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 Sie einen weiteren symbolischen Link:

ln -s gcc /usr/bin/cc
[Anmerkung]

Anmerkung

An dieser Stelle ist es wichtig, den „Gesundheitscheck“, den Sie schon früher durchgeführt haben, erneut laufen zu lassen. Schlagen Sie im Abschnitt 6.12, „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 Kapitel 5 angewendet.

6.14.2. Inhalt von GCC

Installierte Programme: c++, cc (Link auf gcc), cpp, g++, gcc, gccbug und gcov
Installierte Bibliotheken: libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so] und libsupc++.a

Kurze Beschreibungen

cc

Dies ist der C-Compiler.

cpp

Ein C-Präprozessor. Er wird vom Compiler benutzt, um #include, #define und ähnliche Anweisungen im Quellcode durch ihren endgültigen Code zu ersetzen.

c++

Dies ist der C++-Compiler.

g++

Dies ist der C++-Compiler.

gcc

Dies ist der C-Compiler.

gccbug

Ein Shellskript, mit dem man nützliche Fehlerberichte erzeugen kann.

gcov

Ein Werkzeug zum Testen des Deckungsgrades. Es wird zum Analysieren von Programmen benutzt, um herauszufinden, wo Optimierungen den größten Effekt zeigen.

libgcc

Enthält Laufzeitunterstützung für gcc.

libstdc++

Die Standard-C++-Bibliothek.

libsupc++

Stellt Unterstützungsroutinen für die Programmiersprache C++ zur Verfügung.