5.7. Binutils-2.22 - 2. Durchgang

5.7.1. Installation der Binutils

War der letzte Vorgang fehlerfrei? Ehrlich? Wenn nicht, hat das Folgende absolut keinen Sinn! Mit dem hier wird ein weiterer Test durchgeführt. Und funktioniert der Bau von dem nächsten hier nicht, passierte ein Fehler irgendwo vorher bei Binutils, GCC oder Glibc und es macht absolut keinen Sinn, noch weiter zu machen.

Noch einmal: In diesem Paket ist ein linker, ein Assembler und eine Menge anderer Werkzeuge. Zuerst auspacken:

tar -xjf pakete/binutils-2.22.tar.bz2 &&
cd binutils-2.22/

Und wieder brauchen wir ein extra Verzeichnis:

mkdir -v ../binutils-build &&
cd ../binutils-build

und etwas an Konfiguration:

CC="$MOLLI_TGT-gcc -B/tools/lib/" \
   AR=$MOLLI_TGT-ar RANLIB=$MOLLI_TGT-ranlib \
   ../binutils-2.22/configure --prefix=/tools \
   --disable-nls --with-lib-path=/tools/lib

Die Bedeutung der Parameter für configure:

CC="$MOLLI_TGT-gcc -B/tools/lib/" AR=$MOLLI_TGT-ar RANLIB=$MOLLI_TGT-ranlib

Dienen dazu, weil das wirklich ein originaler Bau wird, einen Crosscompiler und die dazugehörigen Werkzeuge zu haben, wirklich ohne jeden nur denkbaren Zusammenhang mit dem Originalsystem.

--with-lib-path=/tools/lib

Soll im Skript beim Kompilieren den Weg zu den Bibliotheken weisen und ihn an den Linker weitergeben, wodurch dieser nicht weiter herumsucht.

Das Paket kompilieren:

make

Geschafft und wieder installieren:

make install

Und jetzt wird der Linker für die Phase in nächsten Kapitel nachjustiert:

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

Die Bedeutung der Parameter für make:

-C ld clean

Damit werden alle übersetzen Programme aus dem Verzeichnis ld entfernt.

-C ld LIB_PATH=/usr/lib:/lib

und der Rest im selben Unterverzeichnis ld adaptiert. LIB_PATH erlaubt, die voreingestellten Werte zu überschreiben und auf den endgültigen Weg zu verweisen. Auch für den Linker ist der ab jetzt gültig.

Zum Schluss noch das Verzeichnis verlassen und entfernen:

cd .. &&
rm -rf binutils-*