在 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 位二进制文件。
我试图从 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 位二进制文件。