5.4. Binutils-2.18 - Durchlauf 1

Binutils ist eine Sammlung von Software-Entwicklungswerkzeugen. Dazu gehören zum Beispiel Linker, Assembler und weitere Programme für die Arbeit mit Objektdateien.

Geschätzte Kompilierzeit: 1 SBU
Etwa Benötigter Speicherplatz: 213 MB

5.4.1. Installation von Binutils

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.

Bintutils erkennt keine neueren Versionen von Texinfo als 4.9. Dieses Problem kann mit folgendem Patch behoben werden:

patch -Np1 -i ../binutils-2.18-configure-1.patch

Die Dokumentation zu Binutils empfiehlt, Binutils außerhalb des Quellordners zu kompilieren:

mkdir -v ../binutils-build
cd ../binutils-build
[Anmerkung]

Anmerkung

Wenn die im Buch angegebenen SBU-Werte einen Nutzen haben sollen, müssen Sie nun die Zeit messen, die Sie zum Kompilieren von Binutils benötigen. Dies ist mit dem folgenden Kommando relativ einfach: time { ./configure ... && make && make install; }.

Bereiten Sie Binutils zum Kompilieren vor:

CC="gcc -B/usr/bin/" ../binutils-2.18/configure \
    --prefix=/tools --disable-nls --disable-werror

Die Bedeutung der configure-Parameter:

CC="gcc -B/usr/bin/"

Dadurch wird gcc gezwungen, den Linker des Host-Systems in /usr/bin zu bevorzugen. Auf einigen Systemen ist dies notwendig, weil der neue Linker ld inkompatibel mit dem gcc des Host-Systems ist.

--prefix=/tools

Dadurch wird das configure-Skript die Binutils-Programme für die Installation nach /tools vorbereiten.

--disable-nls

Deaktiviert die Internationalisierung; i18n wird für die temporären Werkzeuge nicht benötigt.

--disable-werror

Dies verhindert das ungewollte Anhalten des Erstellvorgangs, falls der Host-Compiler Warnungen ausgibt.

Fahren Sie mit dem Kompilieren des Pakets fort:

make

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. Außerdem macht es wenig Sinn, die Tests nun laufen zu lassen, denn die Programme aus dem ersten Durchlauf werden sehr bald durch die aus dem zweiten Durchlauf ersetzt.

Installieren Sie das Paket:

make install

Bereiten Sie nun den Linker auf die späteren „Anpassungen“ vor:

make -C ld clean
make -C ld LIB_PATH=/tools/lib
cp -v ld/ld-new /tools/bin

Die Bedeutung der make-Parameter:

-C ld clean

Dies weist das Programm make an, alle kompilierten Dateien im Unterordner ld zu löschen.

-C ld LIB_PATH=/tools/lib

Dieser Parameter 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 Ordner tools. Der Wert dieser Variable gibt den Standard-Bibliotheksuchpfad für den Linker an. Sie werden später in diesem Kapitel sehen, wie diese Vorbereitung zur Anwendung kommt.

Details zu diesem Paket finden Sie in Abschnitt 6.11.2, „Inhalt von Binutils“