2016-04-03 27 views
-1

gccを使用して以下のアセンブリコードをコンパイルしようとしています。私は最終的にそれがオブジェクトファイルをコンパイルする点に達しましたが、私が試して実行すると、 'バイナリファイルを実行できません'というエラーが返されます。私は私がしようとすると バイナリファイル(Windows用のGCC)を実行できません

./main.o 

を入力して、ファイルを実行し、端末MSYSを使用して

gcc -c main.s -o main.o 

を入力してコンパイルしています1511

窓10バージョンにいると私は戻ってエラーが出ます

./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の終了ステータスを返しました"という未定義の参照をエラーにします。-12を使用しない場合 –

答えて

0

これはLinuxプログラムであり、Windowsでは動作しません。

コメントに記載されているとおり、プログラムをリンクするには、gccコマンドラインから-cを削除する必要があります。

+0

"WinMain @ 16への未定義参照"というエラーが表示されます。終了ステータス ' また、ファイルをリンクするにはどうすればよいですか? –

関連する問題