使用来自NASM和mingw的命令时出现编译错误



我想玩一点汇编。为了开始,我创建了一个小的asm脚本并尝试编译它

nasm -felf64 hello.asm

但当我尝试使用时

ld -o hello.o hello

从MinGW发生错误:

hello.o: file not recognized: File format not recognized

我能做些什么来解决这个问题?我也在gcc中尝试过,但随后出现了相同的错误和另一个错误。

MinGW创建针对Windows的二进制文件。Windows不支持ELF二进制文件(或者它支持用于Linux的Windows子系统?(。不管怎样,MinGW中的ld会期望您提供win64格式的二进制文件,而不是elf64格式。

nasm -fwin64 hello.asm很可能会起作用。


不,它不起作用,因为我刚刚看到您的代码,并且您正在Windows下使用Linux系统调用。

写入,

mov rcx, 69
call ExitProcess

而不是

mov rax, SYS_EXIT
mov rdi, 69
syscall

如果不起作用,请留下评论。

最新更新