2011-03-15 816 views
17

Hasta xcode 4 final (estaba usando 3.latest y 4 GM por el tiempo que estuvo disponible) esto no sucedió. Cuando he actualizado a Xcode 4 versión final, empecé a recibir un error de vinculación al tratar de vincular la versión ARMv7 con mi biblioteca no ARMv7 (mi proyecto se establece con el valor por defecto arquitecturas válidos ARMv7 ARMv6 estándar):Xcode 4 Final - problema "armv6 armv7" mientras se enlazaba con libs de armv6

ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7) 
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7) 
Undefined symbols for architecture armv7: -- list of symbols -- 

El La versión de armv6 compila muy bien, pero el proceso de compilación general falla con 77 errores de enlace.

Entiendo que este es el comportamiento esperado, no enlazará hacia armv7 con una lib armv6. La solución es configurar mi proyecto solo en armv6. Mi pregunta aquí es: ¿por qué funcionaba esto en las versiones anteriores de xcode?

Si fijo a ARMv6 solamente, empiezo a esta advertencia:

Check dependencies 

[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6"). 

no me gusta ver a las advertencias :-) Cualquier persona que tiene problemas similares?

Gracias,

Fernando

Respuesta

22

Acabo de convertir la arquitectura activa de compilación solo en Sí en la pestaña Proyecto -> Configuración de compilación -> Arquitecturas.

+3

Yo diría que solo evita que ocurra este error en el dispositivo actual. una vez que haya archivado para enviar, querrá admitir todas las arquitecturas – Jakob

+0

THX - Esto solucionó el siguiente problema: Error: símbolos no definidos para la arquitectura armv7s: "_OBJC_CLASS _ $ _ QREncoder", referenciado en: Advertencia: ld: advertencia: ignorando el archivo/Users/neo/Library/Developer/Xcode/DerivedData/WinNav-fycjhbccktevjdbrxudedbysqxmy/Build/Products/Debug-iphoneos/libqrencoder.a, el archivo se creó para el archivo que no es la arquitectura que se está vinculando (armv7s):/Users/neo/Library /Developer/Xcode/DerivedData/WinNav-fycjhbccktevjdbrxudedbysqxmy/Build/Products/Debug-iphoneos/libqrencoder.a –

0

A pesar de que todavía no sé por qué esto empezó a ocurrir sólo en la versión final de Xcode 4, he encontrado que mis librerías externas (SSL y criptográficas) fueron compilados en contra de ambos ARMv6 y ARMv7 en el proyecto de código de Google hace muy pocos días:

http://code.google.com/p/ios-static-libraries/

Esto solucionará el problema si se define de dos ruta de búsqueda de biblioteca diferente: uno para ARMv6, uno para ARMv7.

Gracias,

7

En iOS SDK 4.3, parece que el enlazador simplemente se niegan a utilizar una biblioteca ARMv6 en una binaria ARMv7 - este no era el caso antes.

Es por eso que tuve que actualizar el proyecto http://code.google.com/p/ios-static-libraries/ para generar tanto las versiones armv6 como armv7 de las bibliotecas.

3

he añadido marco tercio del partido con algunas clases de demostración en proyecto, pero una vez implementado con éxito que elimina esas clases de demostración y desde entonces comenzó el error viene error "ld: ........ ., archivo es universal pero no contiene un (n) rebanada ARMv6 para la arquitectura ARMv6"

Después de rascarse la cabeza durante todo un día me encontré con esta solución mañana siguiente quizá útiles para amigos iphone compañeros coz sé que el dolor

Objetivos -> "Su objetivo de proyecto" -> Obtener información -> Construir arquitectura activa solo configurado en SÍ

Eso es ..

1

Tenía el mismo problema. Pero la razón era diferente, supongo. Estaba usando el archivo library.a creado para el simulador y tratando de ejecutarlo en el dispositivo ... llegué a saber que necesito diferentes archivos .a para el simulador y el dispositivo.Espero que esto ayude a alguien;)

+0

donde obtendría un archivo .a diferente para el dispositivo, necesito ejecutarlo en el dispositivo funciona bien pero la base de datos está en blanco no funciona bien –

+0

puede usar el mismo código desde el cual está generando el archivo para el simulador, para generar un archivo para devi ce. Solo tienes que cambiar el objetivo al dispositivo. – Zaraki

+0

Sí, tengo tu punto –

Cuestiones relacionadas