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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top