1

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 プログラムをどのように作成しますか?

ありがとう、クレイジーチェンズ

4

2 に答える 2

2

gcc -eオプションは、エントリポイントをstart以外のものにする場合に、エントリポイントを定義します。このようにして、エントリポイントとしてmystart()を作成できます。

gcc -e mystart mycode.c -o mycode

Xcodeで-eオプションを設定する方法がわかりません。

于 2010-12-04T15:19:30.897 に答える