在 windows 中尝试从 obj 构建 exe 时无法识别文件格式

File format not recognized when trying build an exe from obj in windows

我试图从 asm 文件构建一个 exe。 asm 文件如下所示:

global main
extern puts

section .data

msg:
    db "Hello, world!",10,0

section .text

main:
    sub     rsp, 28h
    mov     rcx, msg
    call    puts
    add     rsp, 28h
    ret

然后我使用 NASM 组装它并尝试使用 GCC link 它。但它显示此错误。

> nasm -fwin64 asmtest.asm
> gcc asmtest.obj
asmtest.obj: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status

我无法弄清楚发生了什么。我的 NASM 版本 2.14.02 和 GCC 版本 8.1.0。我遵循了 this 教程(在底部)。我正在我的 Windows 10 64 位机器上执行此操作。

我也看到了问题,但对我没有帮助。

您已经为 32 位二进制文​​件安装了 mingw。您需要安装配置为生成 64 位二进制文​​件的 mingw 版本才能编译 and/or link 64 位二进制文​​件。