プロが教えるわが家の防犯対策術!

gccを使って32ビットのプログラムをしています。
main.cとsu.asmでできたプログラムをくっつけてます
su.asmはスタートアップルーチンでそっからmain.cの
中のmain()を呼び出してます。すると・・・

C:\JO>make
gcc -fno-builtin -nostdlib -ffreestanding -nostartfiles -nodefaultlibs -march=i486 -c main.c
nasm -f win32 su.asm -o su.o -l su.lst
ld -o os.obj -Map mapfile.txt -T ld.scr su.o main.o
main.o(.text+0x21):main.c: undefined reference to `_alloca'
main.o(.text+0x26):main.c: undefined reference to `__main'
make: *** [os.obj] Error 1

A 回答 (2件)

読んだままの意味で「参照しているラベル`__main'が未定義です」の意味ですね。

    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2006/06/06 16:11

質問文はcopy&pasteですか?目で見て打ち込まれましたか?


__mainのほうで,アンダーラインが2文字連続で出てるのがちょっと引っかかります.本当にアンダーライン2個の __mainがエラーメッセージに出てるのだとすると,
main.cのなかで _mainを参照している.コンパイルの結果それは__mainに変換(先頭のアンダーラインを追加)され,どこにもそれが定義されていないのでエラーになっている.と想像されます.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!