在64位Linux上交叉编译Windows 64位程序集

在64位Linux上交叉编译Windows 64位程序集,linux,windows,assembly,cross-compiling,Linux,Windows,Assembly,Cross Compiling,如何在Linux中编译和链接64位Windows汇编程序 我已经知道怎么跑了 nasm -f win64 generic_assembly.asm -o generic_output 但从那以后我就不能跑了 ld generic_output -o generic_executable.exe 我也尝试过在葡萄酒中使用GoLink.exe,但我仍然怀疑它是否真的有效 也许我可以使用Mingw-w64,但我不知道它是如何工作的 如果有任何帮助,我将不胜感激。我正在寻找一个可以在linux上运行

如何在Linux中编译和链接64位Windows汇编程序

我已经知道怎么跑了

nasm -f win64 generic_assembly.asm -o generic_output
但从那以后我就不能跑了

ld generic_output -o generic_executable.exe
我也尝试过在葡萄酒中使用GoLink.exe,但我仍然怀疑它是否真的有效

也许我可以使用Mingw-w64,但我不知道它是如何工作的


如果有任何帮助,我将不胜感激。我正在寻找一个可以在linux上运行的链接器,但如果没有,我也将不胜感激Windows的链接器。

要从linux上链接64位Windows的对象,请安装
x86\u 64-w64-mingw32-gcc
。要执行此操作,请执行以下步骤:

  • 转到并下载最新版本
  • 将存档解压缩到/opt/mingw64
  • 然后执行sudo ln-s/opt/mingw64/bin/x86_64-w64-mingw32-g++/usr/bin/mingw64-g++

现在,您已经安装了适用于Windows 64位的交叉编译器,如果您想要32位版本,请执行相同的操作,但要使用。

您将需要一个类似MinGW的Windows交叉编译器。您的发行版可能已经预装了一个软件包(您只需通过软件包管理器安装即可)。一旦安装了它,您就可以从交叉编译器运行LD-它可能被称为
x86_64-w64-mingw32-LD
,GCC交叉编译器将被称为
x86_64-w64-mingw32-GCC
等等。这是我的Debian Jessie系统上的命名约定。是的,我建议只使用
x86\u 64-w64-mingw32-gcc
将nasm中的
.obj
文件链接到可执行文件中,以防需要任何不明显的
ld
arg。(根据需要使用
-static
和/或
-nostlib
)。