2016-06-21 5 views
1

Wie kompilieren Sie und verknüpfen Sie eine 64-Bit-Windows-Assembler-Programm in LinuxCross-Compiler Windows 64 Bit Assembly auf Linux 64-Bit-

Ich weiß schon

nasm -f win64 generic_assembly.asm -o generic_output 

Aber danach laufen kann ich nicht laufen nur

ld generic_output -o generic_executable.exe 

und ich habe mit GoLink.exe mit Wein versucht, aber ich bin immer noch skeptisch, ob es tatsächlich

Arbeits

Vielleicht könnte ich Mingw-w64 verwenden, aber ich habe keine Ahnung, wie das funktionieren würde

Jede Hilfe wäre zu schätzen Ich bin meist nur auf der Suche nach einem Linker, den ich von Linux ausführen kann, aber sonst würde ein Linker für Windows auch geschätzt werden.

+4

Sie benötigen einen Windows Cross Compiler wie MinGW. Ihre Distribution kann bereits ein Paket mit vorgefertigten Paketen haben (Sie installieren es einfach über Ihren Paketmanager). Sobald Sie es installiert haben, können Sie das _LD_ aus dem Cross-Compiler ausführen - es wird wahrscheinlich 'x86_64-w64-mingw32-ld' genannt, der GCC-Cross-Compiler würde' x86_64-w64-mingw32-gcc' usw. heißen die Namenskonvention auf meinem Debian Jessie-System. –

+1

Yup, ich würde nur 'x86_64-w64-mingw32-gcc' empfehlen, um' .obj' Dateien von Nasm in ausführbare Dateien zu verknüpfen, falls etwas nicht-offensichtliches 'ld' arg benötigt wird. (Verwenden Sie "-static" und/oder "-nostdlib" entsprechend). –

Antwort

2

Um die Objekte für 64-Bit-Windows von Linux zu verknüpfen, installieren Sie x86_64-w64-mingw32-gcc. Gehen Sie hierzu folgendermaßen vor:

  • Gehen Sie zu here, und laden Sie den neuesten Build.
  • Entpacken Sie das Archiv zu/opt/mingw64
  • Dann sudo ln -s /opt/mingw64/bin/x86_64-w64-mingw32-g++ /usr/bin/mingw64-g++ tun

Jetzt haben Sie einen Cross-Compiler für Windows 64-Bit installiert, wenn Sie die 32-Bit-Version das gleiche tun wollen, aber this link verwenden.