| Zeile 25: | Zeile 25: | ||
==== Cygwin ==== | ==== Cygwin ==== | ||
| − | Cygwin kann als | + | Cygwin kann als „emulierte Linux-Umgebung“ unter MS Windows angesehen werden. Cygwin lässt sich leicht installieren: [http://www.cygwin.com/setup.exe diese] Setup-Datei reicht, den Rest erledigt der Installer. Es können dann alle benötigten Pakete heruntergeladen und ebenfalls installiert werden. Besonders wichtig sind folgende Pakete: |
| − | * Devel | + | * Devel → gcc4 |
| − | * Devel | + | * Devel → make |
| − | * Libs | + | * Libs → libgmp-devel |
| − | * Libs | + | * Libs → libmpfr-devel |
| − | * Web | + | * Web → wget |
optional: | optional: | ||
| − | * Devel | + | * Devel → [[Netwide Assembler | nasm]] |
Ist Cygwin erfolgreich eingerichtet, können die binutils sowie der gcc entsprechend der Vorgehensweise unter Ablauf gebaut werden. | Ist Cygwin erfolgreich eingerichtet, können die binutils sowie der gcc entsprechend der Vorgehensweise unter Ablauf gebaut werden. | ||
| Zeile 50: | Zeile 50: | ||
$ tar -xjf gcc-core-4.4.2.tar.bz2 | $ tar -xjf gcc-core-4.4.2.tar.bz2 | ||
| − | + | entpackt werden. Wenn noch weitere Sprachen zusätzlich zu C unterstützt werden sollen, müssen weitere Pakete heruntergeladen werden. Für C++ benötigt man zum Beispiel [http://ftp.gnu.org/gnu/gcc/gcc-4.4.2/gcc-g++-4.4.2.tar.bz2 dieses] Paket. Die komplette Liste befindet sich im Verzeichnis der jeweiligen GCC-Version auf dem FTP-Server. 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 ). Jetzt konfigureren wir die Pakete mit folgendne Befehlen(jeweils im | + | 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 entsprechenden separaten Verzeichnis (gcc-ARCHITEKTUR und binutils-ARCHITEKTUR) ausführen): |
binutils: | binutils: | ||
| − | $ Pfad/zum/ | + | $ Pfad/zum/Code/configure --prefix=$PREFIX --with-sysroot=$PREFIX --target=$TARGET --disable-nls |
gcc: | gcc: | ||
$ Pfad/zum/Code/configure --prefix=$PREFIX --target=$TARGET --disable-nls --enable-languages=c --disable-shared --disable-libssp | $ 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 <i>target</i> Parameter angegeben. Hier | + | für welche CPU-Architektur der Cross-Compiler gebaut wird, wird mit dem <i>target</i>-Parameter angegeben. Hier eine nicht vollständige Liste der wichtigsten Targets: |
| − | * ''x86_64-elf'' (um auf einem 32 Bit Prozessor/OS für ein | + | * ''x86_64-elf'' (um auf einem 32-Bit-Prozessor/-OS für ein(en) 64-Bit-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.) | + | * ''arm-unknown-linux-gnu'' (um für ARM-Systeme Code zu kompilieren.) |
| − | Wenn weitere Sprachen unterstützt werden sollen und die | + | Wenn weitere Sprachen unterstützt werden sollen und die entsprechenden Pakete heruntergeladen und entpackt wurden, dann müssen die Sprachen bei <i>--enable-languages=</i> durch Kommata getrennt aufgezählt werden. |
Nachdem die Pakete nun konfiguriert wurden, müssen diese jeweils noch mit | Nachdem die Pakete nun konfiguriert wurden, müssen diese jeweils noch mit | ||