Как вы строите программу на C, которая включает в себя точку входа в Mac OS X? - PullRequest
0 голосов
/ 04 декабря 2010

Как вы строите программу на C, которая включает точку входа в Mac OS X?

Я хочу построить:

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

Была предпринята еще одна попытка просто посмотреть, что она делает:

gcc -nostdlib -c min.c && otool -tV min.o

И вывод был:

(__TEXT,__text) section
_start:
0000000000000000    pushq   %rbp
0000000000000001    movq    %rsp,%rbp
0000000000000004    leave
0000000000000005    ret

Так откуда же взялось это подчеркивание перед функцией "пуск"? Как я могу предотвратить это? Или проще:

Как создать программу на C, включающую точку входа в Mac OS X?

Спасибо, CrazyChenz

1 Ответ

1 голос
/ 04 декабря 2010

Параметр gcc -e определяет точку входа, когда вы хотите, чтобы точка входа отличалась от начальной.Таким образом, вы можете создать mystart () в качестве точки входа.

gcc -e mystart mycode.c -o mycode

Я не знаю, как установить параметр -e в Xcode.

...