2010-12-04 81 views
0

你如何構建一個包含Mac OS X入口點的C程序?如何構建包含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 

的另外一個嘗試,看看是什麼當時正在運行:

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

輸出功率爲:

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

所以「開始」功能前從何從底線?我如何防止這種情況發生?或者更簡單:

如何構建包含Mac OS X入口點的C程序?

感謝, CrazyChenz

+0

_start可能是一個錯位的名字。在創建開始之前,請注意,有很多預處理必須繼續,否則各種問題都會中斷。要了解符號的概念,您必須定義try nm crt1.o. gcc -e main使「main」成爲入口點而不是開始。你可以用這種方式定義你想要的任何功能。我不知道如何爲Xcode設置該選項。別人可能會。 – 2010-12-04 15:16:35

回答

0

gcc的-e選項定義的入口點,當你想進入點比啓動其他的東西。這樣你可以創建mystart()作爲入口點。

gcc -e mystart mycode.c -o mycode 

我不知道如何在Xcode中設置-e選項。

相關問題