Come si fa a costruire un programma C che include il punto di ingresso su Mac OS X?
-
08-10-2019 - |
Domanda
Come si fa a costruire un programma C che include il punto di ingresso su Mac OS X?
Voglio costruire:
start() {
/* exit system call */
asm("movl $1,%eax;"
"xorl %ebx,%ebx;"
"int $0x80"
);
}
, ma quando faccio funzionare:
gcc -nostdlib min.c
Ho sempre trovato:
ld: could not find entry point "start" (perhaps missing crt1.o)
collect2: ld returned 1 exit status
L'altro tentativo che ho fatto solo per vedere quello che stava facendo era gestito:
gcc -nostdlib -c min.c && otool -tV min.o
E la produzione è stata:
(__TEXT,__text) section
_start:
0000000000000000 pushq %rbp
0000000000000001 movq %rsp,%rbp
0000000000000004 leave
0000000000000005 ret
Allora, dove ha fatto che provengono da sottolineatura prima della "iniziare" la funzione? Come faccio a impedire che ciò accada? O più semplicemente:
Come si fa a costruire un programma C che include il punto di ingresso su Mac OS X?
Grazie, CrazyChenz
Soluzione
L'opzione gcc -e definisce il punto di ingresso, quando si desidera che il punto di ingresso di essere qualcosa di diverso da inizio. In questo modo è possibile creare MyStart () come punto di ingresso.
gcc -e mystart mycode.c -o mycode
Non so come impostare l'opzione -e in Xcode.