5.7.1. Installation von Glibc
Die Glibc-Dokumentation empfiehlt, Glibc in einem dedizierten Build-Verzeichnis zu erstellen:
mkdir -v build cd build
mkdir -v build cd build
Als nächstes bereiten Sie Glibc für die Kompilierung vor:
../konfigurieren \
--prefix=/tools \
--host=$LFS_TGT \
--build=$(../scripts/config.guess) \
--enable-kernel=3.2 \
--with-headers=/tools/include
../konfigurieren \
--prefix=/tools \
--host=$LFS_TGT \
--build=$(../scripts/config.guess) \
--enable-kernel=3.2 \
--with-headers=/tools/include
Die Bedeutung der Konfigurationsoptionen:
--host=$LFS_TGT, --build=$(../scripts/config.guess)
Die kombinierte Wirkung dieser Schalter besteht darin, dass sich das Build-System von Glibc selbst für die Cross-Kompilierung konfiguriert, indem es den Cross-Linker und den Cross-Compiler in verwendet /Werkzeuge.
--enable-kernel=3.2
Dadurch wird Glibc angewiesen, die Bibliothek mit Unterstützung für Linux-Kernel 3.2 und höher zu kompilieren. Problemumgehungen für ältere Kernel sind nicht aktiviert.
--with-headers=/tools/include
Dadurch wird Glibc angewiesen, sich anhand der kürzlich im Tools-Verzeichnis installierten Header selbst zu kompilieren, damit es genau weiß, über welche Funktionen der Kernel verfügt, und sich entsprechend optimieren kann.
Während dieser Phase wird möglicherweise die folgende Warnung angezeigt:
konfigurieren: WARNUNG:
*** Diese Hilfsprogramme fehlen bzw
*** inkompatible Versionen: msgfmt
*** Einige Funktionen werden deaktiviert.
*** Überprüfen Sie die INSTALL-Datei auf erforderliche Versionen.
konfigurieren: WARNUNG:
*** Diese Hilfsprogramme fehlen bzw
*** inkompatible Versionen: msgfmt
*** Einige Funktionen werden deaktiviert.
*** Überprüfen Sie die INSTALL-Datei auf erforderliche Versionen.
Das Fehlende oder das Inkompatible msgfmt Das Programm ist im Allgemeinen harmlos. Das msgfmt Das Programm ist Teil des Gettext-Pakets, das die Host-Distribution bereitstellen sollte.
Note
Es gibt Berichte, dass dieses Paket möglicherweise fehlschlägt, wenn es als „Parallel-Make“ erstellt wird. Wenn dies auftritt, führen Sie den Befehl „make“ mit der Option „-j1“ erneut aus.
Note
Es gibt Berichte, dass dieses Paket möglicherweise fehlschlägt, wenn es als „Parallel-Make“ erstellt wird. Wenn dies auftritt, führen Sie den Befehl „make“ mit der Option „-j1“ erneut aus.
Stellen Sie das Paket zusammen:
um
um
Installieren Sie das Paket:
make install
make install
Vorsicht
An dieser Stelle ist es zwingend erforderlich, zu stoppen und sicherzustellen, dass die Grundfunktionen (Kompilieren und Verknüpfen) der neuen Toolchain wie erwartet funktionieren. Führen Sie die folgenden Befehle aus, um eine Integritätsprüfung durchzuführen:
echo 'int main(){}' > dummy.c
$LFS_TGT-gcc dummy.c
readelf -l a.out | grep ': /tools'
echo 'int main(){}' > dummy.c
$LFS_TGT-gcc dummy.c
readelf -l a.out | grep ': /tools'
Wenn alles richtig funktioniert, sollten keine Fehler auftreten und die Ausgabe des letzten Befehls hat die Form:
[Programminterpreter anfordern: /tools/lib64/ld-linux-x86-64.so.2]
[Programminterpreter anfordern: /tools/lib64/ld-linux-x86-64.so.2]
Beachten Sie, dass der Interpretername für 32-Bit-Maschinen lautet /tools/lib/ld-linux.so.2.
Wenn die Ausgabe nicht wie oben angezeigt wird oder überhaupt keine Ausgabe erfolgt ist, stimmt etwas nicht. Untersuchen Sie die Schritte und verfolgen Sie sie erneut, um herauszufinden, wo das Problem liegt, und beheben Sie es. Dieses Problem muss behoben werden, bevor Sie fortfahren können.
Wenn alles in Ordnung ist, bereinigen Sie die Testdateien:
rm -v dummy.c a.out
rm -v dummy.c a.out
Note
Das Erstellen von Binutils im übernächsten Abschnitt dient als zusätzliche Überprüfung, ob die Toolchain ordnungsgemäß erstellt wurde. Wenn Binutils nicht erstellt werden kann, ist das ein Hinweis darauf, dass bei den vorherigen Binutils-, GCC- oder Glibc-Installationen ein Fehler aufgetreten ist.
Note
Das Erstellen von Binutils im übernächsten Abschnitt dient als zusätzliche Überprüfung, ob die Toolchain ordnungsgemäß erstellt wurde. Wenn Binutils nicht erstellt werden kann, ist das ein Hinweis darauf, dass bei den vorherigen Binutils-, GCC- oder Glibc-Installationen ein Fehler aufgetreten ist.