5.8. Glibc-2.3.4-20040701

Glibc enthält die C-Bibliothek. Sie stellt Systemaufrufe und grundlegende Funktionen zur Verfügung (z. B. das Zuweisen von Speicher, Durchsuchen von Ordnern, Öffnen und Schließen sowie Schreiben von Dateien, Zeichenkettenverarbeitung, Mustererkennung, Arithmetik etc.)

Geschätzte Kompilierzeit: 11.8 SBU

Ungefähr benötigter Festplattenplatz: 800 MB

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

5.8.1. Installieren von Glibc

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.

Grundsätzlich gilt; weichen Sie von dem in diesem Buch beschriebenen Weg zum Kompilieren von Glibc ab, dann riskieren Sie die Stabilität Ihres gesamten LFS-Systems.

Die Glibc-Dokumentation empfiehlt, nicht im Quellordner sondern in einem gesonderten Ordner zu kompilieren:

mkdir ../glibc-build
cd ../glibc-build

Als nächstes bereiten Sie Glibc zum Kompilieren vor:

../glibc-2.3.4-20040701/configure --prefix=/tools \
    --disable-profile --enable-add-ons=nptl --with-tls \
    --with-__thread --enable-kernel=2.6.0 \
    --with-binutils=/tools/bin --without-gd --without-cvs \
    --with-headers=/tools/glibc-kernheaders

Die Bedeutung der configure-Parameter:

--disable-profile

Dadurch werden die Bibliotheken ohne Profiling-Informationen kompiliert. Lassen Sie diese Option weg, wenn Sie mit den Temporären Werkzeugen Profiling betreiben möchten.

--enable-add-ons=nptl

Dadurch verwendet Glibc NPTL als die Threading-Bibliothek.

--with-tls

Hierdurch wird die Unterstützung für Thread-Local Storage (TLS) eingeschaltet. Es wird zur korrekten Funktion von NPTL benötigt.

--with-__thread

Dadurch wird die allgemeine Unterstützung für Threads in Glibc eingeschaltet. Es wird zum korrekten Kompilieren von TLS benötigt.

--enable-kernel=2.6.0

Dadurch wird die Glibc mit Unterstützung für Kernel der Serie 2.6.x gebaut.

--with-binutils=/tools/bin

Diese Option wird nicht wirklich benötigt, stellt aber sicher, dass in Hinsicht auf die Binutils-Programme beim Kompilieren von Glibc nichts schiefgehen kann.

--without-gd

Das verhindert das kompilieren des Programmes memusagestat, welches immer mit Bibliotheken auf dem Host-System verlinkt (libgd, libpng, libz usw.).

--without-cvs

Diese Option soll verhindern, dass ein Makefile eventuell automatische CVS-Downloads durchführt (falls ein CVS-Schnappschuss verwendet wird). Genaugenommen wird diese Option zur Zeit nicht benötigt. Wir setzen sie dennoch ein, um eine Warnung bezüglich des fehlenden Programmes autoconf zu verhindern.

--with-headers=/tools/glibc-kernheaders

Dadurch wird Glibc mit den „rohen“ Kenerl-Headern kompiliert. So können alle Funktionen des Kernels erkannt, und die Glibc optimiert werden.

Während dieser Phase sehen Sie möglicherweise eine Warnung:

configure: WARNING:
*** These auxiliary programs are missing or 
*** incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.

Das fehlende oder inkompatible Programm msgfmt ist normalerweise harmlos, aber manchmal kann es zu Fehlern beim Durchlaufen der Testsuite führen. msgfmt ist Teil des Paketes Gettext, welches auf dem Host-System installiert sein sollte. Wenn msgfmt zwar vorhanden, aber vollkommen inkompatibel ist, dann sollten Sie das Paket auf dem Host-System aktualisieren. Oder Sie fahren ohne das Paket fort und schauen, ob die Testsuite auch ohne es problemlos durchläuft.

Kompilieren Sie das Paket:

make

Der Kompiliervorgang ist nun abgeschlossen. Wie bereits erwähnt, wird empfohlen, die Testsuite für das temporäre System in diesem Kapitel nicht durchlaufen zu lassen. Falls Sie die Testsuite dennoch laufen lassen möchten, führen Sie dieses Kommando aus:

make check

Eine Information über die wichtigen Fehler finden Sie in Abschnitt 6.11, „Glibc-2.3.4-20040701“

Die Glibc Testsuite ist sehr stark von einigen Funktionen Ihres Host-Systems abhängig. Glibc-Fehler in diesem Kapitel sind normalerweise nicht so schlimm. Erst in Kapitel 6 wird die endgültige Glibc installiert, dort sollten dann die meisten Tests erfolgreich durchlaufen. Allerdings können selbst in Kapitel 6 noch Fehler auftreten, zum Beispiel beim math-Test.

Wenn ein Fehler auftritt, notieren Sie ihn, dann rufen Sie make check erneut auf. Die Testsuite sollte dann dort fortfahren, wo sie unterbrochen wurde. Sie können dieses Stoppen und Starten umgehen, indem Sie make -k check aufrufen. Aber stellen Sie in diesem Fall sicher, dass Sie die Ausgaben protokollieren, damit Sie später die Logdatei nach den aufgetretenen Fehlern durchsuchen können.

Auch wenn es nur eine harmlose Nachricht ist, die Installationsroutine von Glibc wird sich über die fehlende Datei /tools/etc/ld.so.conf beschweren. Beheben Sie diese störende Warnung mit:

mkdir /tools/etc
touch /tools/etc/ld.so.conf

Installieren Sie das Paket:

make install

Verschiedene Länder und Kulturen haben auch unterschiedliche Konventionen zum Kommunizieren. Darunter sind einfache Konventionen wie zum Beispiel das Format für Datum und Uhrzeit, aber auch sehr komplexe Konventionen, wie zum Beispiel die dort gesprochene Sprache. Die „Internationalisierung“ von GNU-Programmen funktioniert mit Hilfe der sogenannten Locales. Installieren Sie nun die Glibc-Locales.

[Hinweis]

Hinweis

Wenn Sie, wie empfohlen, die Testsuite in diesem Kapitel nicht laufen lassen, brauchen Sie auch die Locales nicht zu installieren. Sie werden sie dann im nächsten Kapitel installieren.

Wenn Sie die Glibc-Locales dennoch installieren möchten, führen Sie dieses Kommando aus:

make localedata/install-locales

Als Alternative zu dem vorigen Kommando können Sie auch nur die von Ihnen benötigten oder gewünschten Locales installieren. Das erreichen Sie mit dem Kommando localedef. Informationen dazu finden Sie in der Datei INSTALL in den Quellen zu Glibc. Jedoch gibt es einige Locales, die essentiell für die Tests von weiteren Paketen sind, im einzelnen die libstdc++ Tests von GCC. Die folgenden Anweisungen anstelle des oben verwendeten Targets install-locales installieren einen minimalen Satz von Locales, die notwendig sind, um die nachfolgenden Tests erfolgreich durchführen zu können:

mkdir -p /tools/lib/locale
localedef -i de_DE -f ISO-8859-1 de_DE
localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP

Details zu diesem Paket finden Sie in Abschnitt 6.11.4, „Inhalt von Glibc“