Installieren von Binutils-2.14 - Durchlauf 1

Geschätzte Kompilierzeit:              1.0 SBU
Ungefähr benötigter Festplattenplatz:  194 MB

Inhalt von Binutils

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

Installierte Programme: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings und strip

Installierte Bibliotheken: libiberty.a, libbfd.[a,so] und libopcodes.[a,so]

Binutils Installationsabhängigkeiten

Binutils ist abhängig von: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.

Installieren von Binutils

Es ist wichtig, das Binutils als erstes Paket kompiliert wird, weil Glibc und GCC verschiedene Tests bezüglich Linker und Assembler durchführen und daraufhin erst diverse Features einschalten.

Anmerkung: Auch wenn Binutils ein wichtiges Paket in der toolchain ist werden wir nicht die Test-suite durchlaufen lassen. Erstens ist die Test Umgebung noch nicht entsprechend vorbereitet und zweitens werden die nun kompilierten Programme sowieso von denen des zweiten Durchlaufes überschrieben.

Dieses Paket funktioniert nicht gut wenn nicht die Standard Optimierungseinstellungen (inklusive der -march und -mcpu Optionen) benutzt werden. Deshalb sollten event. gesetzte Umgebungsvariablen die die Standard Optimierung überschreiben - zum Beispiel CFLAGS und CXXFLAGS - für den Kompiliervorgang von Binutils zurückgesetzt oder entsprechend abgeändert werden.

Die Dokumentation zu Binutils empfiehlt, Binutils ausserhalb des Quellverzeichnisses zu kompilieren:

mkdir ../binutils-build
cd ../binutils-build

Anmerkung: Wenn sie die angegebenen SBU Werte im Buch benutzen möchten müssen sie nun die Zeit messen, die sie zum kompilieren dieses Pakets benötigen. Dies können sie relativ einfach auf folgende Art tun: time { ./configure ... && ... && ... && make install; }.

Bereiten sie nun Binutils zum kompilieren vor:

../binutils-2.14/configure \
    --prefix=/tools --disable-nls

Die Bedeutung der configure Parameter:

Fahren sie mit dem kompilieren des Pakets fort:

make configure-host
make LDFLAGS="-all-static"

Die Bedeutung der make Parameter:

Und installieren sie das Paket:

make install

Bereiten sie nun den Linker auf das spätere hinzufügen von Glibc vor:

make -C ld clean
make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib

Die Bedeutung der make Parameter:

Warnung

Entfernen sie die Binutils Kompilier- und Quellverzeichnisse noch nicht. Sie benötigen sie später in dem jetzigen Zustand.