Details zu diesem Paket finden Sie in Abschnitt 6.13.2, „Inhalt von Binutils“
Binutils ist eine Sammlung von Software-Entwicklungswerkzeugen, zum Beispiel Linker, Assembler und weitere Programme für die Arbeit mit Objektdateien.
Geschätzte Kompilierzeit: 1.0 SBU
Ungefähr benötigter Festplattenplatz: 194 MB
Binutils ist abhängig von: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed und Texinfo
Es ist wichtig, dass Binutils als erstes Paket kompiliert wird, weil Glibc und GCC verschiedene Tests bezüglich Linker und Assembler durchführen und erst daraufhin bestimmte Funktionen aktivieren.
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.
Die Dokumentation zu Binutils empfiehlt, Binutils ausserhalb des Quellordners zu kompilieren:
mkdir ../binutils-build cd ../binutils-build
Wenn die im Buch angegebenen SBU-Werte einen Nutzen haben sollen, müssen Sie nun die Zeit messen, die Sie zum Kompilieren dieses Pakets benötigen. Dies können Sie relativ einfach mit folgendem Kommando tun: time { ./configure ... && ... && ... && make install; }.
Bereiten Sie Binutils zum Kompilieren vor:
../binutils-2.15.91.0.2/configure --prefix=/tools \ --disable-nls
Die Bedeutung der configure-Parameter:
Dadurch wird das configure-Skript die Binutils-Programme für die Installation in /tools vorbereiten.
Deaktiviert Internationalisierung; sie wird für die statischen Programmen nicht benötigt und NLS kann beim statischen Linken Probleme verursachen.
Fahren Sie mit dem Kompilieren des Pakets fort:
make configure-host make LDFLAGS="-all-static"
Die Bedeutung der make-Parameter:
Dies erzwingt die sofortige Konfiguration alle Unterordner. Eine statisch gebaute Version würde ansonsten fehlschlagen. Diese Option wird zur Umgehung dieses Problems benutzt.
Dies teilt dem Linker mit, dass alle Binutils Programme statisch gelinkt werden sollen. Genaugenommen wird -all-static zuerst an libtool übergeben, welches dann wiederum -static an den Linker übergibt.
Der Kompiliervorgang ist nun abgeschlossen. Normalerweise würden Sie nun die Testsuite durchlaufen lassen, aber in diesem frühen Stadium ist die Testsuite-Umgebung (Tcl, Expect und DejaGNU) noch nicht verfügbar. Ausserdem macht es wenig Sinn die Tests nun laufen zu lassen, weil die Programme aus dem ersten Durchlauf sehr bald durch die aus dem zweiten Durchlauf ersetzt werden.
Installieren Sie das Paket:
make install
Bereiten Sie nun den Linker auf die späteren „Anpassungen“ vor:
make -C ld clean make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib
Die Bedeutung der make-Parameter:
Dies weist das Programm make an, alle kompilierten Dateien im Unterordner ld zu löschen.
Diese Option kompiliert alles im Unterordner ld erneut. Die Angabe der Makefile-Variable LIB_PATH auf der Kommandozeile überschreibt den Standardwert und zeigt auf den temporären tools-Ordner. Der Wert dieser Variable spezifiziert den Standard-Bibliotheksuchpfad für den Linker. Sie werden später in diesem Kapitel sehen, wie diese Vorbereitung zur Anwendung kommt.
Entfernen Sie die Binutils Kompilier- und Quellordner noch nicht. Sie benötigen Sie später in ihrem jetzigen Zustand.
Details zu diesem Paket finden Sie in Abschnitt 6.13.2, „Inhalt von Binutils“