6.19.2. Installation der Binutils
Man könnte noch kurz überprüfen, ob die PTY auch wirklich in der
Umgebung von chroot noch arbeiten, was man mit diesen Test prüfen
kann:
expect -c "spawn ls"
Das Kommando sollte folgende Ausgabe erzeugen:
spawn ls
Wenn allerdings die folgende Ausgabe erscheint, ist das System
nicht korrekt eingerichtet. Beseitige den Fehler bevor Du weiter
machst.
The system has no more ptys.
Ask your system administrator to create more.
Die Lösung ist recht einfach, Deine Kernel Konfiguration sollte
folgendes enthalten:
CONFIG_UNIX98_PTYS=y
CONFIG_DEVPTS_FS=y
Der nächste Befehl soll verhindern, dass eine zu alte standards.info
Datei installiert wird:
rm -fv etc/standards.info &&
sed -i.bak '/^INFO/s/standards.info //' etc/Makefile.in
Ein Paar von den Tests müssen repariert werden da sie mit GCC-4.6.2
fehlschlagen würden.
sed -i "/exception_defines.h/d" ld/testsuite/ld-elf/new.cc &&
sed -i "s/-fvtable-gc //" ld/testsuite/ld-selective/selective.exp
Noch einmal: Binutils soll von außerhalb kompiliert werden!
mkdir -v ../binutils-build &&
cd ../binutils-build
Bereite das Paket zum kompilieren vor:
../binutils-2.22/configure --prefix=/usr --enable-shared
Das Paket kompilieren:
make tooldir=/usr
Die Bedeutung der Parameter für make:
-
tooldir=/usr
-
Das endgültige Verzeichnis ist mit
$(exec_prefix)/$(target_alias) fixiert, bei X86_64 zum
Beispiel in /usr/x86_64-unknown-linux-gnu
. Wir haben
ein anderes Vorgehen und deswegen ist /usr
nicht das Ziel. Bei Crosskompilieren
gilt aber das vorher gesagte. Zur Erinnerung:
Crosskompilieren heißt, auf dem einen Rechner Molli für einen
gänzlich anderen herrichten.
Wichtig
Und endlich ist es soweit niemand darf jetzt darauf verzichten,
auf das:
Teste die Resultate:
make check
Installiere das Paket:
make tooldir=/usr install
Installiere die libiberty
Headerdatei, sie wird von einigen Programmen gebraucht:
cp -v ../binutils-2.22/include/libiberty.h /usr/include