iphone xcode static-linking armv7 armv6

iphone - Final de Xcode 4: problema con "armv6 armv7" al enlazar con armv6 libs



static-linking (5)

Hasta el final de xcode 4 (estaba usando 3.latest y 4 GM para el momento en que estaba disponible) esto no sucedió. Cuando actualicé a la versión final de xcode 4, comencé a recibir un error de vinculación al intentar vincular la versión armv7 con mi biblioteca que no es armv7 (mi proyecto está configurado con las arquitecturas válidas de armv7 armv7 estándar por defecto)

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 --

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

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

Si configuro solo armv6, comienzo a recibir esta advertencia:

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

No me gusta ver advertencias :-) ¿Alguien tiene problemas similares?

Gracias,

Fernando


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


Aunque todavía no sé por qué esto comenzó a suceder solo en la versión final de xcode 4, descubrí que mis libs externas (ssl y crypto) se compilaron contra armv6 y armv7 en el proyecto de código de Google hace unos días:

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

Esto solucionará el problema si define dos rutas de búsqueda de biblioteca diferentes: una para armv6 y otra para armv7.

Gracias,


En el SDK 4.3 de iOS, parece que el enlazador simplemente se negará a usar una biblioteca armv6 en un binario armv7; este no era el caso antes.

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


He agregado el Framework de terceros con algunas clases de demostración en el proyecto, pero una vez implementado con éxito, eliminé esas clases de demostración y, desde entonces, el error comenzó a aparecer. Error "ld: ........., el archivo es universal pero no contiene una (n) división armv6 para arquitectura armv6 "

Después de rascarme la cabeza durante un día entero, encontré que esta solución a la mañana siguiente podría ser útil para otros amigos de iPhone porque sé el dolor

Objetivos -> "El objetivo de su proyecto" -> Obtener información -> Crear una arquitectura activa solo establecida en SÍ

Eso es..


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