2016-04-03 299 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退出狀態' 此外,如何鏈接文件? –