Binutils ist eine Sammlung von Software-Entwicklungswerkzeugen. Dazu gehören zum Beispiel Linker, Assembler und weitere Programme für die Arbeit mit Objektdateien.
Dieses Paket funktioniert unter Umständen nicht fehlerfrei, wenn die voreingestellten Optionen für Compiler-Optimierungen übergangen werden. (Dazu gehören auch -march und -mcpu.) Daher sollten die entsprechenden Umgebungsvariablen (wie z. B. CFLAGS und CXXFLAGS) für den Kompiliervorgang zurückgesetzt oder entsprechend abgeändert werden.
Jetzt ist ein guter Zeitpunkt um sicherzustellen, dass die Pseudo-Terminals (PTYs) in Ihrer chroot-Umgebung funktionieren. Mit dem folgenden schnellen Test sehen Sie, ob alles korrekt eingerichtet ist:
expect -c "spawn ls"
Falls die folgende Meldung erscheint, ist Ihre chroot-Umgebung nicht für PTYs vorbereitet:
The system has no more ptys. Ask your system administrator to create more.
Das Problem muss behoben werden, bevor Sie die Testsuites von Binutils und GCC laufen lassen.
Die Dokumentation zu Binutils empfiehlt, Binutils außerhalb des Quellordners zu kompilieren:
mkdir ../binutils-build cd ../binutils-build
Bereiten Sie Binutils zum Kompilieren vor:
../binutils-2.15.94.0.2.2/configure --prefix=/usr \ --enable-shared
Kompilieren Sie das Paket:
make tooldir=/usr
Normalerweise ist tooldir (der Ordner, in den die ausführbaren Dateien endgültig installiert werden) auf $(exec_prefix)/$(target_alias) eingestellt. Ein i686-Computer löst dies zum Beispiel zu /usr/i686-pc-linux-gnu auf. Da wir aber nur für unser eigenes System installieren, brauchen wir diesen speziellen Ordner in /usr nicht. Diese Konfiguration fände z. B. dann Verwendung, wenn das System zum Querkompilieren genutzt würde (zum Beispiel, um auf einer Intel-Maschine Code zu generieren, der auf einem PowerPC ausgeführt werden kann).
In diesem Abschnitt wird die Testsuite von Binutils als kritisch eingestuft. Wir raten Ihnen, die Tests unter keinen Umständen zu überspringen.
Testen Sie das Ergebnis:
make check
Installieren Sie das Paket:
make tooldir=/usr install
Installieren Sie die Header-Datei libiberty, sie wird von einigen Paketen benötigt:
cp ../binutils-2.15.94.0.2.2/include/libiberty.h /usr/include