如何构建包含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 

那么在“开始”function之前,那个下划线是从哪里来的呢? 我该如何防止这种情况发生? 或者更简单:

如何构建包含Mac OS X入口点的C程序?

谢谢,CrazyChenz

当您希望入口点不是start时,gcc -e选项定义入口点。 这样您就可以在入口点创建mystart()。

 gcc -e mystart mycode.c -o mycode 

我不知道如何在Xcode中设置-e选项。