Download Linux From Scratch - Open Source Software on erdfunkstelle.de

Transcript
Linux From Scratch
Als erstes wird der Linker angepasst. Aus diesem Grunde haben wir die Quell− und Kompilierverzeichnisse
aus dem zweiten Durchlauf von Binutils bestehen lassen. Installieren sie den angepassten Linker aus dem
binutils−build Verzeichnis:
make −C ld INSTALL=/tools/bin/install install
Anmerkung: Falls sie aus irgendeinem Grund die Warnung, das Binutils Verzeichnis zu
behalten, übersehen haben oder es vielleicht versehentlich gelöscht haben, es ist noch nichts
verloren. Ignorieren sie einfach das obige Kommando. Das Ergebnis ist dann, das das nächste
Paket Binutils gegen die Glibc Bibliotheken in /tools anstelle von /usr gelinkt wird. Das
ist zwar nicht ideal, aber unsere Tests haben gezeigt das die resultierenden Programme
identisch zu sein scheinen.
Von nun an wird jedes kompilierte Programme nur gegen die Bibliotheken in /usr/lib und /lib gelinkt.
Das zusätzliche INSTALL=/tools/bin/install wird benötigt, weil das Makefile aus dem zweiten
Durchlauf immer noch die Referenz auf /usr/bin/install enthält, welches wir noch nicht installiert
haben. Einige Distributionen enthalten einen Symlink ginstall der Vorrang im Makefile hat und hier
Probleme verursachen kann. Das obige Kommando kümmert sich auch darum.
Sie können nun die Binutils Quell− und Kompilierverzeichnisse löschen.
Als nächstes passen sie die GCC Specs Datei an, so das sie auf den neuen dynamischen Linker zeigt. Wie
schon zuvor benutzen wir dazu sed:
SPECFILE=/tools/lib/gcc−lib/*/*/specs &&
sed −e 's@ /tools/lib/ld−linux.so.2@ /lib/ld−linux.so.2@g' \
$SPECFILE > newspecfile &&
mv −f newspecfile $SPECFILE &&
unset SPECFILE
Auch hier empfehlen wir, den Befehl zu kopieren und einzufügen. Und auch hier ist es wieder sinnvoll die
Specs Datei zu überprüfen ob die Änderungen tatsächlich gemacht wurden.
Wichtig: Wenn sie an einer Plattform arbeiten wo der Name des Linkers nicht
ld−linux.so.2 ist, müssen sie in den obigen Kommandos ld−linux.so.2 durch dem
Namen des Linkers für ihre Plattform ersetzen. Wenn nötig schlagen sie nochmal im
Abschnitt namens Technische Anmerkungen zur toolchain in Kapitel 5 nach.
Achtung
Es ist an diesem Punkt zwingend notwendig die grundlegenden Funktionen (kompilieren und linken) der
angepassten toolchain zu überprüfen. Aus diesem Grund führen wir folgenden Test durch:
echo 'main(){}' > dummy.c
gcc dummy.c
readelf −l a.out | grep ': /lib'
Wenn alles richtig funktioniert sollte es keine Fehlermeldungen geben und die Ausgabe des letzten
Kommandos sollte dann so aussehen:
[Requesting program interpreter: /lib/ld−linux.so.2]
Konfigurieren des dynamischen Laders
92