Crosscompiler für Windows — Änderungen 9530 → 9569

Zeile 14: Zeile 14:
 
týndur erwartet, dass dieses Präfix in der ''config.sh'' eingetragen wird, damit die Makefiles den Compiler finden. Dazu muss die Variable ''COMPILER_PREFIX_I386'' in Zeile 3 mittels ''COMPILER_PREFIX_I386=i586-elf-'' entsprechend gesetzt werden.
 
týndur erwartet, dass dieses Präfix in der ''config.sh'' eingetragen wird, damit die Makefiles den Compiler finden. Dazu muss die Variable ''COMPILER_PREFIX_I386'' in Zeile 3 mittels ''COMPILER_PREFIX_I386=i586-elf-'' entsprechend gesetzt werden.
  
−
Alternativ kann man statt C:\crosstools\bin auch C:\crosstools\i586-elf\bin in die PATH-Variable eintragen. Dann haben die Programme kein Präfix und heißen einfach ''gcc'', ''ld'', etc. Das kann allerdings unter Umständen zu Problemen führen, wenn noch mehr Compiler in der PATH-Variable eingetragen sind.
+
Alternativ kann man statt C:\crosstools\bin auch C:\crosstools\i586-elf\bin in die PATH-Variable eintragen. Dann haben die Programme kein Präfix und heißen ''gcc'', ''ld'', etc. Das kann allerdings unter Umständen zu Problemen führen, wenn noch mehr Compiler in der PATH-Variable eingetragen sind.
  
 
===MSYS einrichten===
 
===MSYS einrichten===
Zeile 22: Zeile 22:
  
 
===NASM===
 
===NASM===
−
Für týndur wird als Assembler außerdem NASM benötigt, den es auch auf SourceForge zum [http://sourceforge.net/projects/nasm/files/ Download] gibt. Diesen auch einfach installieren.
+
Für týndur wird als Assembler außerdem NASM benötigt, den es auch auf SourceForge zum [http://sourceforge.net/projects/nasm/files/ Download] gibt. Diesen auch installieren.
  
 
==Cross-Compiler Kommandozeile==
 
==Cross-Compiler Kommandozeile==
Zeile 35: Zeile 35:
 
Das Buildsystem von týndur ist nicht darauf ausgelegt unter Windows ein GRUB-Image zu erstellen, deswegen ist dort eine alternative Lösung gefragt. Dieses Thema gehört zwar nicht mehr direkt zum Cross-Compiler, aber da dieses mehr oder wenige eine Anleitung ist, wie man týndur unter Windows baut, schreibe ich das vorerst mal hierhin.  
 
Das Buildsystem von týndur ist nicht darauf ausgelegt unter Windows ein GRUB-Image zu erstellen, deswegen ist dort eine alternative Lösung gefragt. Dieses Thema gehört zwar nicht mehr direkt zum Cross-Compiler, aber da dieses mehr oder wenige eine Anleitung ist, wie man týndur unter Windows baut, schreibe ich das vorerst mal hierhin.  
  
−
Um die GRUB-Problematik zu umgehen, ist es am einfachsten einfach ein fertiges Image (z.B. von den [http://download.tyndur.org/releases/ Releases]) nehmen, und darauf die Dateien von Hand zu kopieren. Diese Images kann man zum Beispiel mit [[Virtual Floppy Drive]] als virtuelles Laufwerk einbinden, um sie zu verändern.
+
Um die GRUB-Problematik zu umgehen, kann man ein fertiges Image (z.B. von den [http://download.tyndur.org/releases/ Releases]) nehmen, und darauf die Dateien von Hand zu kopieren. Diese Images kann man zum Beispiel mit [[Virtual Floppy Drive]] als virtuelles Laufwerk einbinden, um sie zu verändern.
  
−
Nachdem du týndur mit ''make'' kompiliert hast, kannst du mit ''make updateroot'' die erstellten Programme in der passenden Verzeichnisstruktur zusammenstellen lassen. Das Ergebnis landet im Verzeichnis ''build\root'' und den Inhalt davon kannst du dann einfach auf das Disketten-Image kopieren und ggf. boot/grub/menu.lst anpassen.
+
Nachdem du týndur mit ''make'' kompiliert hast, kannst du mit ''make updateroot'' die erstellten Programme in der passenden Verzeichnisstruktur zusammenstellen lassen. Das Ergebnis landet im Verzeichnis ''build\root''. Den Inhalt davon kannst du dann auf das Disketten-Image kopieren und ggf. boot/grub/menu.lst anpassen.
  
 
==Feedback==
 
==Feedback==
Zeile 45: Zeile 45:
 
===gcc: CreateProcess: No such file or directory===
 
===gcc: CreateProcess: No such file or directory===
 
*Die beste Lösung dafür ist, nicht gcc.exe und die anderen Programme im Verzeichnis i586-elf\bin zu benutzen, sondern die i586-elf-gcc.exe und so weiter im Verzeichnis bin.
 
*Die beste Lösung dafür ist, nicht gcc.exe und die anderen Programme im Verzeichnis i586-elf\bin zu benutzen, sondern die i586-elf-gcc.exe und so weiter im Verzeichnis bin.
−
*Alternative: Dieser Fehler tritt auf, weil der gcc die Datei cc1.exe nicht finden kann. Man könnte diese (und cc1plus.exe und collect2.exe) als Workaround einfach von libexec\gcc\i586-elf\4.4.0 nach i586-elf\bin kopieren. Das sorgt allerdings unter Umständen für weitere Probleme, wenn man die mitgelieferte Bibliotheken nutzen will, siehe z.B. nächstes Problem.
+
*Alternative: Dieser Fehler tritt auf, weil der gcc die Datei cc1.exe nicht finden kann. Man könnte diese (und cc1plus.exe und collect2.exe) als Workaround von libexec\gcc\i586-elf\4.4.0 nach i586-elf\bin kopieren. Das sorgt allerdings unter Umständen für weitere Probleme, wenn man die mitgelieferte Bibliotheken nutzen will, siehe z.B. nächstes Problem.
 
*Ein Auftreten dieser Meldung bei i586-elf-gcc (der eigentlich nicht das Problem haben sollte) wurde im Forum durch den selben Workaround gelöst. [http://forum.lowlevel.eu/index.php?topic=2345.msg26522#msg26522]
 
*Ein Auftreten dieser Meldung bei i586-elf-gcc (der eigentlich nicht das Problem haben sollte) wurde im Forum durch den selben Workaround gelöst. [http://forum.lowlevel.eu/index.php?topic=2345.msg26522#msg26522]