Domanda

sto sviluppando un programma su OSX 10.6.4 (Snow Leopard), e voglio essere in grado di eseguire il prodotto compilato su altri Mac Intel, alcuni dei quali non può avere XCode isntalled.

Per semplificare le cose, ho scritto un programma Ciao Mondo.

#include<stdio.h>
int main() {
    printf("Hello world!\n");
    return 0;
}

Se compilo come

gcc -static prog.c

ottengo l'errore folllowing:

ld: library not found for -lcrt0.o

Non so dove trovare questa libreria. Ora, alcune persone hanno detto che non devo compilare staticamente sui Mac in quanto il sistema di librerie condivise dovrebbero essere disponibili in tutto il mondo (librerie di terze parti possono essere collegate manualmente). Tuttavia, quando si tenta di eseguire questo programma Ciao Mondo su un altro Mac, ottengo l'errore folowing:

 dyld: unknown required load command 0x80000022
 Trace/BPT trap

Quindi, come si fa a compilare un programma su Mac in modo che possa essere distribuito? Io non sto avendo problemi di architettura, come la maggior parte dei computer mi interessano sono i Mac Intel.

È stato utile?

Soluzione

Non utilizzare -static. Il tuo eseguibile verrà eseguito bene su altri 10.6.x x86 Mac. Se si desidera distribuire il pre-10.6 Mac, allora avrete bisogno di utilizzare l'SDK appropriato, ma a parte che dovrebbe "solo lavoro", indipendentemente dal fatto che gli strumenti di sviluppo vengono installati.

Altri suggerimenti

Potrebbe valere la pena utilizzando XCode per creare le vostre, utilizzando il modello di programma riga di comando (eseguibili Unix di base) eseguibili, semplicemente perché gestirà un sacco di opzioni di compilazione per voi (compreso che SDK state compilando contro / che le versioni si prendono di mira).

La mia ipotesi è che una compilazione commmand-line di default sta per compilare contro le librerie di sistema corrente (10.6.4).

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