6.16.1. Installation von Binutils
Überprüfen Sie, ob die PTYs in der Chroot-Umgebung ordnungsgemäß funktionieren, indem Sie einen einfachen Test durchführen:
erwarten Sie -c "spawn ls"
erwarten Sie -c "spawn ls"
Dieser Befehl sollte Folgendes ausgeben:
spawn ls
spawn ls
Wenn die Ausgabe stattdessen die folgende Meldung enthält, ist die Umgebung nicht für den ordnungsgemäßen PTY-Betrieb eingerichtet. Dieses Problem muss behoben werden, bevor die Testsuiten für Binutils und GCC ausgeführt werden:
Das System hat keine Ptys mehr.
Bitten Sie Ihren Systemadministrator, weitere zu erstellen.
Das System hat keine Ptys mehr.
Bitten Sie Ihren Systemadministrator, weitere zu erstellen.
Entfernen Sie nun einen Test, der verhindert, dass die Tests vollständig ausgeführt werden:
sed -i '/@\tincremental_copy/d' gold/testsuite/Makefile.in
sed -i '/@\tincremental_copy/d' gold/testsuite/Makefile.in
In der Binutils-Dokumentation wird empfohlen, Binutils in einem dedizierten Build-Verzeichnis zu erstellen:
mkdir -v build cd build
mkdir -v build cd build
Bereiten Sie Binutils für die Kompilierung vor:
../configure --prefix=/usr \
--enable-gold \
--enable-ld=default \
--enable-plugins \
--enable-shared \
--disable-werror \
--enable-64-bit-bfd \
--with-system-zlib
../configure --prefix=/usr \
--enable-gold \
--enable-ld=default \
--enable-plugins \
--enable-shared \
--disable-werror \
--enable-64-bit-bfd \
--with-system-zlib
Die Bedeutung der Konfigurationsparameter:
--enable-gold
Erstellen Sie den Gold-Linker und installieren Sie ihn als ld.gold (neben dem Standard-Linker).
--enable-ld=default
Erstellen Sie den ursprünglichen BDF-Linker und installieren Sie ihn sowohl als ld (der Standardlinker) als auch als ld.bfd.
--enable-plugins
Aktiviert die Plugin-Unterstützung für den Linker.
--enable-64-bit-bfd
Aktiviert 64-Bit-Unterstützung (auf Hosts mit schmaleren Wortgrößen). Wird auf 64-Bit-Systemen möglicherweise nicht benötigt, schadet aber nicht.
--with-system-zlib
Verwenden Sie die installierte zlib-Bibliothek, anstatt die mitgelieferte Version zu erstellen.
Stellen Sie das Paket zusammen:
make tooldir=/usr
make tooldir=/usr
Die Bedeutung des Parameters make:
tooldir=/usr
Normalerweise ist das Tooldir (das Verzeichnis, in dem sich die ausführbaren Dateien letztendlich befinden) auf eingestellt $(exec_-Präfix)/$(target_alias). Beispielsweise würden x86_64-Maschinen dies auf erweitern /usr/x86_64-unknown-linux-gnu. Da es sich um ein benutzerdefiniertes System handelt, ist dieses zielspezifische Verzeichnis in / usr ist nicht nötig.
$(exec_prefix)/$(target_alias) würde verwendet werden, wenn das System zum Cross-Compilieren verwendet würde (z. B. Kompilieren eines Pakets auf einem Intel-Computer, der Code generiert, der auf PowerPC-Computern ausgeführt werden kann).
Wichtig
Die Testsuite für Binutils in diesem Abschnitt wird als kritisch angesehen. Überspringen Sie es auf keinen Fall.
Wichtig
Die Testsuite für Binutils in diesem Abschnitt wird als kritisch angesehen. Überspringen Sie es auf keinen Fall.
Testen Sie die Ergebnisse:
Machen Sie -k Check
Machen Sie -k Check
Der PC-relative Offset-Test und der debug_msg.sh-Test schlagen möglicherweise in der LFS-Umgebung fehl. Installieren Sie das Paket:
make tooldir=/usr install
make tooldir=/usr install