【问题标题】:Cross Compile Windows 64 Bit Assembly on Linux 64 bit在 Linux 64 位上交叉编译 Windows 64 位程序集
【发布时间】:2016-06-21 06:49:48
【问题描述】:

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

我已经知道要跑步了

nasm -f win64 generic_assembly.asm -o generic_output

但在那之后我就不能跑了

ld generic_output -o generic_executable.exe

我已经尝试将 GoLink.exe 与 wine 一起使用,但我仍然怀疑它是否真的有效

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

任何帮助将不胜感激我主要只是在寻找一个可以从 linux 运行的链接器,但对于 Windows 的链接器也将不胜感激。

【问题讨论】:

  • 你需要一个像 MinGW 这样的 windows 交叉编译器。您的发行版可能已经有一个预先制作的包(您只需通过包管理器安装它)。一旦你安装了它,你就可以从交叉编译器运行 LD - 它可能被称为x86_64-w64-mingw32-ld,GCC 交叉编译器将被称为x86_64-w64-mingw32-gcc 等等。这是我的命名约定Debian Jessie 系统。
  • 是的,我建议只使用 x86_64-w64-mingw32-gcc 将 nasm 中的 .obj 文件链接到可执行文件中,以防需要任何不明显的 ld arg。 (酌情使用-static 和/或-nostdlib)。

标签: linux windows assembly cross-compiling


【解决方案1】:

要从 Linux 链接 64 位 Windows 的对象,请安装 x86_64-w64-mingw32-gcc。为此,请按以下步骤操作:

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

现在您已经为 Windows 64 位安装了交叉编译器,如果您想要 32 位版本也可以这样做但使用this link

【讨论】:

    猜你喜欢
    • 2021-11-30
    • 2011-02-11
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多