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
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
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.
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