2012-03-27 7 views
10

Nel tentativo di compilare un programma fittizio per iPhoneOS, Xcode4, gcc non sembra andare oltre la directory iniziale sysrootin /usr/lib/system/libcache.dylib, manca l'architettura richiesta ARMv6

$ echo $ISYSROOT 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk 
$ gcc -arch armv6 --sysroot=$ISYSROOT test.cpp 
ld: in /usr/lib/system/libcache.dylib, missing required architecture armv6 in file for architecture armv6 
collect2: ld returned 1 exit status 

Se Lascio fuori sysroot,

$ gcc -arch armv6 test.cpp 
ld: warning: ignoring file /usr/lib/crt1.o, missing required architecture armv6 in file 
ld: warning: ignoring file /usr/lib/libgcc_s.1.dylib, missing required architecture armv6 in file 
ld: warning: ignoring file /usr/lib/libSystem.dylib, missing required architecture armv6 in file 
Undefined symbols for architecture armv6: 
    "start", referenced from: 
    -u command line option 
ld: symbol(s) not found for architecture armv6 
collect2: ld returned 1 exit status 

I seguenti lavori, ma sembra molto scadente e non scalabile. Cosa sta succedendo qui?

$ gcc -arch armv6 -L$ISYSROOT/usr/lib/system --sysroot=$ISYSROOT test.cpp 

Aggiornamento . A quanto pare questo è un problema noto, anche se non è ancora chiaro come passare sysroot a gcc ma isysroot del D.

http://www.doitscared.com/?m=201104

Quando si compila la libreria, se si vede questo errore “ld: non depositare trovato: /usr/lib/system/libcache.dylib per architettura armv7 ", quindi il tuo comando di collegamento utilizza" -sysroot "che non funziona in Xcode 4. Invece, cambia il comando linker per usare" -isysroot ”. (Nota: Questo si applica solo al comando del linker I comandi di compilazione devono continuare ad utilizzare “-sysroot” Vedi qui per maggiori dettagli...)

+0

grazie! $ gcc -arch armv6 -L $ ISYSROOT/usr/lib/system --sysroot = $ ISYSROOT test.cpp mi ha aiutato! –

risposta

0

Cambiare la destinazione di distribuzione del progetto deve essere di almeno 4,3 e funzionerà. Questo è un problema con XCode 4, ma non è necessario distribuire app nelle versioni iOS precedenti alla 4.3. Gli utenti iOS tendono a rimanere aggiornati sulle loro versioni iOS.

+0

Sono bloccato su 4.2.1 con un vecchio dispositivo iOS che non può essere aggiornato oltre quel punto - Volevo solo compilare ncurses per questo. Grazie per niente. – Wyatt8740