Comment construire un programme C qui inclut le point d'entrée sur Mac OS X?Comment construire un programme C qui inclut le point d'entrée sur Mac OS X?
Je veux construire:
start() {
/* exit system call */
asm("movl $1,%eax;"
"xorl %ebx,%ebx;"
"int $0x80"
);
}
mais quand je lance:
gcc -nostdlib min.c
Je reçois toujours:
ld: could not find entry point "start" (perhaps missing crt1.o)
collect2: ld returned 1 exit status
L'une autre tentative, je fait juste pour voir ce qu'il faisait était exécuté:
gcc -nostdlib -c min.c && otool -tV min.o
Et la sortie est:
(__TEXT,__text) section
_start:
0000000000000000 pushq %rbp
0000000000000001 movq %rsp,%rbp
0000000000000004 leave
0000000000000005 ret
Alors, où est-ce que underscore viennent d'avant la fonction "start"? Comment puis-je empêcher cela? Ou plus simplement:
Comment construire un programme C qui inclut le point d'entrée sur Mac OS X?
Merci, CrazyChenz
_start est un nom tronqué, probablement. Avant de créer un démarrage, sachez qu'il y a beaucoup de prétraitement à effectuer ou que toutes sortes de problèmes se produiront. Pour avoir une idée des symboles que vous devez définir, essayez nm crt1.o. gcc -e main fait "principal" le point d'entrée au lieu de commencer. Vous pouvez définir n'importe quelle fonction de cette façon. Je ne sais pas comment définir cette option pour Xcode. Quelqu'un d'autre pourrait le faire. –