| Zeile 15: | Zeile 15: | ||
== Bau eines Cross-Compilers == | == Bau eines Cross-Compilers == | ||
| − | Der Bau eines Cross-Compilers gestaltet sich recht einfach. Meistens gilt es, sich die aktuellen binutils und den gcc herunterzuladen. Die Befehle zum Übersetzen gleichen sich unter Linux und Windows | + | Der Bau eines Cross-Compilers gestaltet sich recht einfach. Meistens gilt es, sich die aktuellen binutils und den gcc herunterzuladen. Die Befehle zum Übersetzen gleichen sich unter Linux und Windows(Cygwin, MinGW). |
=== Linux === | === Linux === | ||
| − | |||
| − | |||
Unter Linux kann es passieren, dass spätestens beim Konfigurieren vom gcc selbiges mit der Fehlermeldung abbricht, dass zwei Libraries nicht installiert seien: GMP und MPFR. Diese sind dann aus der Paketverwaltung der Distribution zu beziehen oder können [ftp://ftp.gmplib.org/pub/gmp-4.3.1/gmp-4.3.1.tar.bz2 hier] und [http://www.mpfr.org/mpfr-current/mpfr-2.4.1.tar.bz2 hier] heruntergeladen werden. Diese müssen nur entpackt und mit dem in Linux bekannten Dreisatz ''./configure, make, make install'' gebaut und installiert werden. | Unter Linux kann es passieren, dass spätestens beim Konfigurieren vom gcc selbiges mit der Fehlermeldung abbricht, dass zwei Libraries nicht installiert seien: GMP und MPFR. Diese sind dann aus der Paketverwaltung der Distribution zu beziehen oder können [ftp://ftp.gmplib.org/pub/gmp-4.3.1/gmp-4.3.1.tar.bz2 hier] und [http://www.mpfr.org/mpfr-current/mpfr-2.4.1.tar.bz2 hier] heruntergeladen werden. Diese müssen nur entpackt und mit dem in Linux bekannten Dreisatz ''./configure, make, make install'' gebaut und installiert werden. | ||
| Zeile 38: | Zeile 36: | ||
* Devel -> [[Netwide Assembler | nasm]] | * Devel -> [[Netwide Assembler | nasm]] | ||
| − | Ist Cygwin erfolgreich eingerichtet, können die binutils sowie der gcc entsprechend der Vorgehensweise unter | + | Ist Cygwin erfolgreich eingerichtet, können die binutils sowie der gcc entsprechend der Vorgehensweise unter Ablauf gebaut werden. |
==== MinGW ==== | ==== MinGW ==== | ||
| Zeile 45: | Zeile 43: | ||
=== Ablauf === | === Ablauf === | ||
| − | Der Ablauf ist | + | Der Ablauf ist immer der gleiche: Folgende Pakete müssen heruntergeladen werden |
| + | [http://ftp.gnu.org/gnu/binutils/binutils-2.20.tar.bz2 Binutils] und | ||
| + | [http://ftp.gnu.org/gnu/gcc/gcc-4.4.2/gcc-core-4.4.2.tar.bz2 gcc] und anschliesend mittels | ||
| + | $ tar -xjf binutils-2.20.tar.bz2 | ||
| + | $ tar -xjf gcc-core-4.4.2.tar.bz2 | ||
| + | |||
| + | ausgepackt werden. Wenn noch weitere Sprachen zusätzlich zu C unterstützt erden sollen, müssen die entsprechenden Pakete auch noch heruntergeladen werden beisppielsweise [http://ftp.gnu.org/gnu/gcc/gcc-4.4.2/gcc-g++-4.4.2.tar.bz2 dieses] Paket für C++. Danach müssen sie mit speziellen Parametern konfiguriert werden. Der Einfachheit halber sollte man dabei folgende Variablen setzen: | ||
$ export TARGET=ziel-plattform | $ export TARGET=ziel-plattform | ||
$ export PREFIX=wo-die-crossutils-landen-sollen | $ export PREFIX=wo-die-crossutils-landen-sollen | ||
| − | Dann reicht es, beim configure --target=$TARGET und --prefix=$PREFIX anzugeben. Auch ist es sinnvoll, die binutils und den gcc außerhalb ihrer entpackten Verzeichnisse zu bauen, also immer separate Verzeichnisse zu erstellen (gcc-ARCHITEKTUR und binutils-ARCHITEKTUR eignen sich beispielsweise hierfür ). | + | Dann reicht es, beim configure --target=$TARGET und --prefix=$PREFIX anzugeben. Auch ist es sinnvoll, die binutils und den gcc außerhalb ihrer entpackten Verzeichnisse zu bauen, also immer separate Verzeichnisse zu erstellen (gcc-ARCHITEKTUR und binutils-ARCHITEKTUR eignen sich beispielsweise hierfür ). Jetzt konfigureren wir die Pakete mit folgendne Befehlen(jeweils im entsprechendem separatem Verzeichniss(gcc-ARCHITEKTUR und binutils-ARCHITEKTUR) ausführen): |
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | binutils: | |
| + | $ Pfad/zum/code/configure --prefix=$PREFIX --with-sysroot=$PREFIX --target=$TARGET --disable-nls | ||
| + | gcc: | ||
| + | $ Pfad/zum/Code/configure --prefix=$PREFIX --target=$TARGET --disable-nls --enable-languages=c --disable-shared --disable-libssp | ||
| − | + | für welche CPU Architektur der cross Compiler gebaut wird, wird mit dem target Parameter angegeben. Hier mal eine nicht vollständige Liste der wichtigsten Targets: | |
| − | + | * ''x86_64-elf'' (um auf einem 32 Bit Porzessor/OS für ein 64Bit Prozessor/OS zu kompilieren. kann auch verwendet werden um sich einen cross compiler für Windows zu bauen.) | |
| − | + | * ''arm-unknown-linux-gnu'' (um für ARM Systeme Code zu kompilieren.) | |
| − | + | Wenn weitere Sprachen unterstützt werden sollen und die entsrechenden Pakete heruntergeladen und entpackt wurden, dann müssen die Sprachen bei --enable-languages= aufgezählt werden. mit Komata getrennt. | |
| − | + | Nachdem die Pakete nun konfiguriert wurden, müssen diese jeweils noch mit | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
$ make | $ make | ||
| − | + | $ make install | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | $ | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | gebaut und installiert werden. | ||
== Siehe auch == | == Siehe auch == | ||