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

Transcript
Linux From Scratch - Version 6.1
6.12. Erneutes Anpassen der Toolchain
Nachdem die neue C-Bibliothek nun installiert ist, muss die Toolchain erneut angepasst werden.
Modifizieren Sie sie so, dass alle weiteren kompilierten Programme gegen die neue C-Bibliothek gelinkt
werden. Im Grunde ist das das gleiche, was Sie im vorigen Kapitel beim Anpassen der Glibc schonmal
gemacht haben, auch wenn es aussieht, als wäre es genau umgekehrt: Im vorigen Kapitel haben Sie die
Toolchain von /{,usr/}lib auf dem Host in den neuen Ordner /tools/lib umgelenkt. Nun lenken
Sie die Toolchain von diesem Ordner /tools/lib um auf unsere LFS-Ordner /{,usr/}lib.
Beginnen Sie mit dem Anpassen des Linkers. Dies ist der Grund dafür, dass wir die Quell- und
Kompilierordner aus dem zweiten Durchlauf von Binutils nicht gelöscht haben. Wechseln Sie in den Ordner
binutils-build und Installieren Sie von dort den angepassten Linker:
make -C ld INSTALL=/tools/bin/install install
Anmerkung
Falls Sie aus irgendeinem Grund die Warnung übersehen haben, den Binutils-Ordner zu
behalten, oder ihn vielleicht versehentlich gelöscht haben, ist noch nichts verloren. Ignorieren
Sie einfach das obige Kommando. Das bewirkt, dass das nächste Paket, Binutils, gegen die
Glibc-Bibliotheken in /tools anstelle von /{,usr/}lib gelinkt wird. Das ist zwar nicht
ideal, aber unsere Tests haben gezeigt, dass die resultierenden Programme identisch zu sein
scheinen.
Von nun an wird jedes kompilierte Programm nur noch gegen die Bibliotheken in /usr/lib und /lib
gelinkt. Das zusätzliche INSTALL=/tools/bin/install ist nötig, weil das Makefile aus dem zweiten
Durchlauf immer noch die Referenz auf /usr/bin/install enthält, welches wir aber noch nicht installiert
haben. Einige Distributionen enthalten einen symbolischen Link 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 Kompilierordner löschen.
Als nächstes müssen Sie GCCs specs-Datei so bearbeiten, dass sie den neuen dynamischen Linker
referenziert. Diese Aufgabe wird von einem einfachen perl-Kommando erledigt:
perl -pi -e 's@ /tools/lib/ld-linux.so.2@ /lib/ld-linux.so.2@g;' \
-e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;' \
`gcc --print-file specs`
Danach sollten Sie die specs-Datei überprüfen und sicherstellen, dass alle gewünschten Änderungen
wirklich durchgeführt wurden.
Wichtig
Wenn Sie mit einer Plattform arbeiten, bei der 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 Abschnitt 5.2,
„Technische Anmerkungen zur Toolchain,“ nach.
107