6.14. GCC-3.4.1

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

Geschätzte Kompilierzeit: 11.7 SBU

Ungefähr benötigter Festplattenplatz: 294 MB

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

6.14.1. 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/svn/general/gcc.html.

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.1-no_fixincludes-1.patch

GCC hat Probleme beim Kompilieren einiger Programme, die nicht zu einer Basis-LFS-Installation gehören (z. B. Mozilla und kdegraphics), wenn GCC zusammen mit einer neuen Version von Binutils eingesetzt wird. Wenden Sie den folgenden Patch an, um das Problem zu beheben:

patch -Np1 -i ../gcc-3.4.1-linkonce-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 GCC zum Kompilieren vor:

../gcc-3.4.1/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

Die Testsuite in diesem Abschnitt wird 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.13, „GCC-3.4.1 - 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
[Hinweis]

Hinweis

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

Der C-Compiler

cpp

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

c++

Der C++-Compiler

g++

Der C++-Compiler

gcc

Der C-Compiler

gccbug

Ein Shellskript, mit dem man gute 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