2012-10-03 55 views
7

Así que recientemente actualicé Xcode a 4.5 y pude obtener un teléfono con iOS6. Estaba haciendo pruebas en los simuladores bien (4.3/5.1/6.0) pero cuando decidí construir sobre el teléfono iOS 6 real, me dio este error.Errores de compilación de Xcode iOS6: Sin arquitectura

No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv6 armv7 i386). 

he hecho un poco de búsqueda y lo arreglaron por entrar en configuración de generación de cambiar las arquitecturas válidos para incluir armv7s y se hizo lo que se supone que debe hacer.

Sin embargo, añadiendo que tengo este error

ld: file is universal (3 slices) but does not contain a(n) armv7s slice: some static library framework for architecture armv7s 

Después de algunos mirando siente a mí el marco biblioteca estática está causando todos los problemas, ya que no es compatible con iOS 6 y no soy demasiado optimista que se puede arreglar fácilmente Sin embargo, como no puedo precisar mi situación exacta en la red, espero que haya alguien que sepa esto mejor que yo y pueda ayudarme. Gracias

Nota: la biblioteca estática está en todas partes en el código, la eliminación es más o menos no es una opción

Respuesta

2

Xcode 4.5 no soporta ARMv6 más, por lo que necesita para eliminar esta arquitectura.

Como ya se enteraron, la biblioteca se utiliza no parece apoyar ARMv7, que ahora es esencial.

Creo que no hay otra alternativa que compilar la biblioteca con el objetivo correcto. Si tienes el código fuente, esto debería ser trivial; si es un tercero, dependes de ellos para actualizar. Ellos sabrán, sin embargo, que sin actualizar su biblioteca ha llegado al final de la vida.

+0

Ya parece que es necesario actualizar la biblioteca estática, probé la sugerencia de Chris pero no funcionó. – user1289479

5

el fin de construir, todas las bibliotecas estáticas una aplicación enlaces contra debe generar código para todas las arquitecturas de la aplicación .

Parece que Xcode 4.5 ha actualizado su proyecto para compilar el código de armv7s, pero olvidó agregar armv7s a las arquitecturas activas de la aplicación.

Una vez que fijo que, parece que el problema es que la biblioteca estática no está produciendo código armv7s, pero su aplicación está tratando de construir para armv7s.

Si ese es el problema, hay dos formas de arreglar esto. Ya sea que usted quiere que su aplicación sólo para generar código ARMv7 (eliminando la necesidad de código armv7s), para lo cual tendrá que cambiar la configuración de destino de su aplicación a:

enter image description here

... o desea que su aplicación y todas las bibliotecas estáticas vinculadas a tienen configuración de generación que se ven así:

enter image description here

código ARMv7 se ejecutará en cualquier cosa de las 3gs hacia arriba. El código de armv7s se ejecutará solo en el iPhone 5, y será un poco más rápido.

Así que si usted tiene acceso a un iPhone 5 para probar en, y usted tiene el código fuente de la biblioteca estática entonces la segunda opción es probablemente el mejor. De lo contrario, suponiendo que su biblioteca esté generando al menos el código armv7, entonces, siempre y cuando su aplicación no intente construir armv7s, también debería estar bien.

Si la biblioteca sólo está construyendo código ARMv6, que no está soportada por xCode 4,5, entonces tendrá que cambiar sus configuraciones de generación para producir al menos ARMv7 código.

+0

Bueno, yo no puedo quitar la arquitectura armv7s ya que me dará el error hay arquitectura de nuevo, pero ¿cómo puedo añadirlo a la biblioteca estática? – user1289479

+0

Lo siento, debería haber sido más claro. Editaré –

0

Remover y añadir armv7s ARMv7 (y/o ARMv6)

+0

Arquitectura válida: (Antes) armv6 armv7 i386 (Después) armv6 armv7 i386 armv7s Tuve que agregarlo para eliminar el error de compilación sin arquitecturas – user1289479

+0

¿Se puede cambiar el SDK base a iOS 5 y ejecutarlo así? No puedo recordar en la cima de mi cabeza. – Vinnie

10

Puede intentar cambiar "Crear arquitectura activa solamente" SÍ -> NO. Funciona bien para mi

1

I tiene un problema similar. Lo resolvió cambiando 'Build active Architecture Only' a 'NO' en la configuración de compilación de Target Project.

enter image description here

Cuestiones relacionadas