Mac OS X のエントリ ポイントを含む C プログラムをどのように作成しますか?
私は構築したい:
start() {
/* exit system call */
asm("movl $1,%eax;"
"xorl %ebx,%ebx;"
"int $0x80"
);
}
しかし、私が実行すると:
gcc -nostdlib min.c
私はいつも得る:
ld: could not find entry point "start" (perhaps missing crt1.o)
collect2: ld returned 1 exit status
それが何をしているのかを見るためだけに私が行ったもう1つの試みは実行されました:
gcc -nostdlib -c min.c && otool -tV min.o
出力は次のとおりです。
(__TEXT,__text) section
_start:
0000000000000000 pushq %rbp
0000000000000001 movq %rsp,%rbp
0000000000000004 leave
0000000000000005 ret
では、"start" 関数の前のアンダースコアはどこから来たのでしょうか? それを防ぐにはどうすればよいですか?またはもっと簡単に:
Mac OS X のエントリ ポイントを含む C プログラムをどのように作成しますか?
ありがとう、クレイジーチェンズ