2011-10-24 12 views
15

Ho alcune librerie statiche che ho costruito per l'uso sulle architetture armv7. Quando provo a usarli in un progetto iOS che eseguo sul mio simulatore iPhone 5.0, ottengo degli errori che mi dicono di undefined symbols for architecture i386 nelle mie librerie statiche.Il simulatore iOS su mac è in esecuzione con architettura i386, non con armv7?

Quindi immagino che questo significhi che il simulatore di iphone vuole le librerie compilate per i386? Qual è il punto del simulatore allora - perché non emulare anche l'architettura armv7?

Quindi l'unico modo per testare le mie librerie statiche è connettere un dispositivo fisico iOS ed eseguirlo?

Oppure ho capito male?

+0

Questo problema è il motivo per cui il progetto Android utilizza QEMU, un emulatore . È molto più lento del simulatore iOS. –

risposta

26

Quindi immagino che questo significhi che il simulatore di iphone vuole librerie compilate per i386? Qual è il punto del simulatore allora - perché non è così che simuli anche l'architettura armv7 ?

Hai risposto alla tua domanda. È un simulatore , non un emulatore . Pertanto è un programma Mac OSX, in esecuzione su architettura i386. Se si compilano anche le librerie statiche per i386, sarà possibile utilizzarle sul simulatore.

9

Io non sono molto sicuro, ma i386 è per Simulator e ARMv7 è per dispositivi che è stato collegato alla macchina.

4

È possibile compilare l'app tramite lo strumento da riga di comando Xcode utilizzando l'architettura i386 (è anche possibile eseguirlo nell'interfaccia utente Xcode modificando le impostazioni di generazione).

xcodebuild -sdk iphonesimulator6.1 -arch i386 VALID_ARCHS="i386 armv7 armv7s" clean install 

Eseguire questo comando nella directory in cui si trova il file projectName.xcodeproj.

Ecco una rottura verso il basso dello script:

-sdk iphonesimulator6.1 // Build the app on iPhone simulator 6.1 
-arch i386 // Build your app using i386 architecture 
VALID_ARCHS="i386 armv7 armv7s" // Specify these architectures are valid 
clean install // Clean all the builds then re-build and install 
+0

Grazie, questo ha funzionato per me per i nuovi requisiti su Open Graph di Facebook durante l'invio di oggetti per la revisione – estemendoza

0

Se volete provare i simulatori con i386 basta andare per = < iPhone 5.

Problemi correlati