Frage

Ich arbeite einen Kernel auf dem Schreiben, und ich habe ein paar Freunde auf dem Projekt mit mir zu arbeiten. Wir haben DJGPP wurden mit dem Projekt für eine Weile zu kompilieren, aber wir haben einige Cross-Plattform-Kompatibilitätsprobleme mit dieser Art und Weise zusammenzustellen, die mein Haupt Partnet über das Projekt verlassen haben, nicht in der Lage auf Windows XP zu kompilieren. (DJGPP GCC Probleme mit dem Argumente wird mit listet mehr als 127 auf Windows XP, aber nicht Probleme mit den gleichen Argumente Listen auf Vista hat. Also, für einmal, arbeitet Vista besser als XP auf etwas. Ò.ó)

Anywho, anstatt zu versuchen, etwas schmutzig Hack zu arbeiten, um das verflixte Ding mit DJGPP kompilieren zu machen, haben wir beschlossen, dass wir DJGPP ganz und arbeiten mit einer anderen Version von GCC für Fenster Graben wollen. Das Problem ist, MinGW (meines Wissens) nicht lassen Sie uns NASM Syntax für die Montage Teile des Codes verwenden, und es wäre ein bisschen wie ein Schmerz sein, um es zu konvertieren alle zu AT & T-Syntax an dieser Stelle. Mögliche natürlich seit seinem ziemlich früh im Projekt, aber ein Schmerz.

So, jetzt wissen Sie das Problem. Meine Frage ist: Was GCC Compiler-Distribution für Windows ermöglicht es uns, am einfachsten Port dieses Projekt selbst? Idealerweise sind wir für etwas, das NASM Assembler Syntax tun können, haben keine Abhängigkeit von externel DLLs (dies ist ein Kernel hier, wird es keinen Zugang zu ihnen haben) und consistantly auf mehrere Versionen unter Windows arbeiten. Was sind Ihre Empfehlungen über den besten Weg, diesen zu gehen zu tun, und welche Version von GCC für Windows empfehlen Sie?

Beachten Sie, dass, wenn wir gehen zu müssen, um das Projekt zu AT & T-Syntax konvertieren, die in Ordnung ist, würde Ich mag einfach nicht tun. Wir verwenden tatsächlich NASM die Montage Bits davon zu montieren, und das erzeugt eine gültige .o-Datei, aber MinGW ist nicht in der Lage, dass in aus irgendeinem Grund zu verknüpfen. Ich denke, die Inline-Assembler-Bits (vielleicht 5 Zeilen) sind bereits AT & T-Syntax, wie GCC erforderlich.

Danke!

War es hilfreich?

Lösung

Sie passieren wahrscheinlich den falschen Objekttyp mit der Option -f NASM.

Ich wette Sie -f coff vorbei sind.

Sie müssen -f win32 passieren.

Andere Tipps

Bauen

einen Cross-Compiler.

http://wiki.osdev.org/GCC_Cross-Compiler

Dies ist, was ich tue, als von DJGPP für die Entwicklung auf einem Windows-Host Übergang. Ich empfehle die Cygwin-Methode, wie sie als MSYS etwas stabiler ist.

Wenn Sie das getan haben, konfiguriert NASM elf32 Objektdateien zu bauen, und du bist gut zu gehen.

spielst Du NASM für DOS oder Windows kompiliert? Ich sah nicht so aus, aber es ist möglich, dass es einen Unterschied gibt. Auch, wenn Ihr NASM zu alt ist, kann es nicht in der Lage sein, etwas zu erzeugen MinGW verstehen können.

Eine schnelle Google-Suche gefunden Tutorial auf x264 unter Kompilieren MinGW , wo einer der Schritte ist NASM auf MinGW zu kompilieren.

Gelingt das nicht, könnten Sie versuchen, (wie auf einem Kommentar zu einer anderen Antwort vorgeschlagen) mit objcopy.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top