2016-04-03 298 views
-1

我想使用gcc编译下面的汇编代码段。我终于明白它编译的是一个目标文件,但是当我尝试运行它时,它会返回一个错误,说'无法执行二进制文件'。我在Windows 10版本1511无法执行二进制文件(GCC for windows)

我使用MSYS终端,并通过输入

gcc -c main.s -o main.o 

编译我试图通过进入

./main.o 

执行该文件,我找回了错误

./main.o: ./main.o: cannot execute binary file 

汇编代码是:

.section .text 
    .global main 
main: 
    mov $4,%eax 
    mov $1,%ebx 
    mov $message,%ecx 
    mov msglength,%edx 
    int $0x80 

    mov $1, %eax 
    mov $0, %ebx 
    int $0x80 
.section .data 
    message: .ascii "Hello world!" 
    msglength: .word 12 

任何帮助将不胜感激。

+4

你只是编译,而不是链接。要么'ld'会有帮助,要么在输出中没有指定.o – Tommylee2k

+0

这不是在输出中指定.o的情况,不要在编译时使用-c –

+0

@dwelch如果我不使用-c I得到一个错误,说:“未定义引用'WinMain @ 16 ... ld返回1退出状态' –

回答

0

这是一个Linux程序,不适用于Windows。

如评论中所述,您需要链接该程序,从gcc命令行中删除-c

+0

如果我不使用-c我得到一个错误说:”未定义引用'WinMain @ 16 ... ld返回1退出状态' 此外,如何链接文件? –