Glibc-2.3.3-lfs-5.1

Glibc ist 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.). Die C-Bibliothek wird von allen dynamisch gelinkten Programmen verwendet.

Approximate build time:  11.8 SBU
Required disk space:     734.2 MB

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

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.3-lfs-5.1/configure --prefix=/tools \
    --disable-profile --enable-add-ons=linuxthreads \
    --with-binutils=/tools/bin --with-headers=/tools/include \
    --without-gd --without-cvs

Die Bedeutung der configure-Parameter:

  • --disable-profile: Dies sorgt dafür, dass die Bibliotheken ohne Profiling-Informationen erzeugt werden. Lassen Sie diese Option weg, wenn Sie mit den erzeugten Bibliotheken Profiling betreiben möchten.

  • --enable-add-ons=linuxthreads: Dies aktiviert Zusätze, die zu Glibc installiert wurden, in unserem Fall Linuxthreads.

  • --with-binutils=/tools/bin und --with-headers=/tools/include: Genaugenommen werden diese Optionen nicht benötigt. Aber sie stellen sicher, dass in Bezug auf die Kernel-Header und Binutils-Programme beim Kompilieren der Glibc nichts schiefgehen kann.

  • --without-gd: Diese Option stellt sicher, dass wir nicht das memusagestat Programm erzeugen, das seltsamerweise immer gegen die Host-Bibliotheken (libgd, libpng, libz und so weiter) verlinkt wird.

  • --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, um eine Warnung bezüglich des fehlenden Programmes autoconf zu verhindern.

Während dieser Phase sehen Sie möglicherweise die folgende 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.

Kompilieren Sie das Paket:

make AUTOCONF=no

Der Kompiliervorgang ist nun abgeschlossen. Wie bereits erwähnt, empfehlen wir, 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

Die Glibc Testsuite ist sehr stark von einigen Funktionen Ihres Host-Systems abhängig, insbesondere vom Kernel. Darüberhinaus können in diesem Kapitel einige Tests von der Umgebung Ihres Host-Systems negativ beeinflusst werden. Diese werden natürlich kein Problem mehr sein, wenn wir später die Testsuite von Glibc in der chroot-Umgebung in Chapter 6 ausführen. Grundsätzlich erwarten wir, dass die Glibc-Testsuite fehlerfrei durchläuft. Nichtsdestotrotz können Fehler unter bestimmten Umständen manchmal nicht vermieden werden. Hier ist eine Liste der uns allgemein bekannten Probleme:

  • Der math Test schlägt manchmal fehl, wenn Sie ein System mit einer älteren Intel- oder AMD-CPU besitzen. Bestimmte Optimierungseinstellungen haben hier ebenfalls einen gewissen Einfluss.

  • Der gettext-Test schlägt manchmal aufgrund von Host-System bedingten Problemen fehl. Die genauen Ursachen sind noch nicht ganz geklärt.

  • Der atime-Test schlägt fehl, wenn die LFS-Partition mit der Option noatime eingehängt wurde. Auch andere Dateisystemeigenschaften können hier Einfluss haben.

  • Der shm-Test kann fehlschlagen, wenn auf dem Host-System das Dateisystem devfs verwendet wird, aber aufgrund fehlender Kernelunterstützung kein tmpfs Dateisystem unter /dev/shm gemountet ist.

  • Auf alter oder langsamer Hardware können einige Tests aufgrund von Timeouts fehlschlagen.

Machen Sie sich keine allzugrossen Gedanken, wenn einige Glibc-Tests in diesem Kapitel fehlschlagen. Die Glibc aus Chapter 6 ist diejenige, die wir endgültig verwenden werden. Erst dort ist es wirklich wichtig, dass die Tests erfolgreich durchlaufen. Aber denken Sie daran, selbst in Chapter 6 können immer noch Fehler auftreten -- beim math-Test zum Beispiel. 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 mitloggen, damit Sie später die Logdatei nach den aufgetretenen Fehlern durchsuchen können.

Auch wenn es nur eine harmlose Meldung ist, die Installationsphase von Glibc wird sich über das Fehlen von /tools/etc/ld.so.conf beschweren. Verhindern Sie diese störende Meldung:

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 komplexeKonventionen, wie zum Beispiel die dort gesprochene Sprache. Die „Internationalisierung“ von GNU-Programmen funktioniert mit Hilfe der sogenannten Locales. Wir installieren 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. Wir 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 „Inhalt von Glibc“.