| Zeile 21: | Zeile 21: | ||
= binutils = | = binutils = | ||
| − | Die GNU-binutils beinhalten unter anderem den Linker ld, den Assembler as und viele weitere kleine Helfer wie ar, objdump oder objcopy. Da gcc auf diesen basiert, müssen diese vor dem gcc kompiliert werden. Diese sind | + | Die GNU-binutils beinhalten unter anderem den Linker ld, den Assembler as und viele weitere kleine Helfer wie ar, objdump oder objcopy. Da gcc auf diesen basiert, müssen diese vor dem gcc kompiliert werden. Diese sind strengn genommen auch Bestandteil des Cross-Compilers, da sie auch für eine bestimmte Target- und Host-Plattform konfiguriert werden müssen. |
Jetzt aber zur eigentlichen Arbeit. Um die binutils zu kompilieren, muss zuerst der Quellcode heruntergeladen werden. Dieser kann von http://ftp.gnu.org/gnu/binutils/ bezogen werden. In diesem Artikel wird von der Version 2.18 ausgegangen. Er müsste aber auch für jüngere und ältere Versionen funktionieren. | Jetzt aber zur eigentlichen Arbeit. Um die binutils zu kompilieren, muss zuerst der Quellcode heruntergeladen werden. Dieser kann von http://ftp.gnu.org/gnu/binutils/ bezogen werden. In diesem Artikel wird von der Version 2.18 ausgegangen. Er müsste aber auch für jüngere und ältere Versionen funktionieren. | ||
Nach dem Herunterladen muss das Archiv entpackt werden: | Nach dem Herunterladen muss das Archiv entpackt werden: | ||
| Zeile 30: | Zeile 30: | ||
$ mkdir binutils-build | $ mkdir binutils-build | ||
$ cd binutils-build | $ cd binutils-build | ||
| − | Beim Konfigurieren muss auch das Verzeichnis festgelegt werden, in das die binutils installiert werden sollen. Hier wird jetzt < | + | Beim Konfigurieren muss auch das Verzeichnis festgelegt werden, in das die binutils installiert werden sollen. Hier wird jetzt <tt>/usr/local/crosstools</tt> benutzt. Folgender Befehl wird zum Konfigurieren beunutzt: |
$ ../binutils-2.18/configure --prefix=/usr/local/crosstools --target=i386-elf --disable-nls | $ ../binutils-2.18/configure --prefix=/usr/local/crosstools --target=i386-elf --disable-nls | ||
| − | Als Zielplattform wird hier i386-elf benutzt, da dies wohl die Meistbenutzte im Zusammenhang mit Betriebssystementwicklung. Der letzte Schalter < | + | Als Zielplattform wird hier i386-elf benutzt, da dies wohl die Meistbenutzte im Zusammenhang mit Betriebssystementwicklung ist. Der letzte Schalter <tt>--disable-nls</tt> dient dazu, sämtliche Übersetzungen zu deaktivieren, da die meist mehr verwirren als nützen. |
== Kompilieren == | == Kompilieren == | ||
| − | Nach dem Konfigurieren ist der nächste Schritt das | + | Nach dem Konfigurieren ist der nächste Schritt das Kompilieren: |
$ make all | $ make all | ||
Wer eine CPU mit mehreren Kernen benutzt, kann diesen vorgang etwas beschleunigen, wenn er den Parameter -j3 benutzt. Dieser Signalisiert make, dass maximal 3 Instanzen des Compilers zur selben Zeit laufen dürfen. Standardmässig wird hier 1 benutzt. Als Daumenregel wird oft Anzahl der Kerne + 1 empfohlen. | Wer eine CPU mit mehreren Kernen benutzt, kann diesen vorgang etwas beschleunigen, wenn er den Parameter -j3 benutzt. Dieser Signalisiert make, dass maximal 3 Instanzen des Compilers zur selben Zeit laufen dürfen. Standardmässig wird hier 1 benutzt. Als Daumenregel wird oft Anzahl der Kerne + 1 empfohlen. | ||