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
ご協力いただければ幸いです。
あなたはリンクしていないだけでコンパイルしています。 'ld'が助けになるか、出力に.oを指定しないでください。 – Tommylee2k
出力に.oを指定するのではなく、コンパイル時に-cを使用しません。 –
@dwelch -cを使用しない場合はI "WinMain @ 16 ... ldが1の終了ステータスを返しました"という未定義の参照をエラーにします。-12を使用しない場合 –