2010-05-10 17 views
5

Ya he pasado innumerables horas desconcertado por esto, utilizando las búsquedas de Google y otras preguntas de desbordamiento de pila en vano.XCode error de vinculación al apuntar a armv7

Tengo una aplicación universal para iPhone/iPad, que parece compilar bien cuando el objetivo es armv6. Sin embargo, cuando el dispositivo está IPAD, consigo esta advertencia:

 
warning: building for SDK 'Device - iPhone OS 3.2' requires an armv7 architecture. 

Por extraño que parezca, la aplicación todavía funciona muy bien en el iPad, a pesar de esta advertencia. Sin embargo, sí quiero hacer las cosas de la "manera correcta" de lo que eso signifique en este caso. Cuando cambio la arquitectura destino a ARMv7, consigo que une errores:

 
    "___restore_vfp_d8_d15_regs", referenced from: 
    *redacted* 

    "___save_vfp_d8_d15_regs", referenced from: 
    *redacted* 

ld: symbol(s) not found 

collect2: ld returned 1 exit status 

Las porciones "redactados" de los errores son referencias a la biblioteca estática a la que estoy tratando de enlazar.

Esto es lo que he intentado de las muchas sugerencias en línea. Cada uno de éstos se propusieron más de una vez sin ninguna explicación, lo que me lleva a creer que nadie bastante entiende este problema:.

"Nunca utilice el menú desplegable en la parte superior izquierda de la ventana de XCode para elegir el destino en lugar , ponga esto en base SDK y el SDK Base para iPhone OS 3.0 en la configuración de destino. Permite configurar el dispositivo de destino a su objetivo preferido (iPad, iPhone OS 3.2 en mi situación.)"

esto produce el error "La biblioteca no se encuentra para -lcrt1.3.1.o"

"Asegúrese de que GCC no esté enlazando con la versión incorrecta de la biblioteca estándar. (Usted tendrá que asegurarse de que el LIBRARY_SEARCH_PATH no tiene el camino equivocado en ella.) "

Mi LIBRARY_SEARCH_PATH ya está vacía, así que esto no parece pertinente.

" Trate compilar con GCC 4.0 en lugar de 4.2 GCC "

me sale un error de sintaxis en un archivo de cabecera UIKit El error es. "error de sintaxis antes 'AT_NAME' token" La línea es" UIKIT_EXTERN UILocalizedIndexedCollation @interface:.. NSObject . "

Otro proyecto compila muy bien con la misma configuración de destino , que realmente me está haciendo cuestionar mi cordura. ¿Podría estar lidiando con un proyecto XCode corrupto?

Si alguien sabe lo que está sucediendo realmente y tiene una referencia o no le importa explicarlo, le estaría muy agradecido.

¡Salud!

+1

Qué arquitecturas se combinan en la biblioteca? Puede encontrar esto con el comando de archivo, p. "archivo libfoo.a". – Crufty

Respuesta

4

VFP entre ARMv7 y ARMv6 difiere de varias maneras. En ARMv7, generalmente es preferible usar NEON. El problema es que su biblioteca estática depende de VFP en ARMv6, ya sea que necesite compilar la biblioteca en ARMv7 o mantener toda la aplicación en ARMv6.

Revertir a GCC 4.0 es una tontería: la compatibilidad con ARMv7 era básicamente inexistente en aquel momento a menos que Apple lo respaldara.

+0

Gracias por la información, y estoy de acuerdo con GCC 4.0. Las diferencias de VFP explicarán lo que está sucediendo. Lo extraño es que las aplicaciones de muestra que vienen con la biblioteca están compilando muy bien (e incluso tienen la misma configuración). Puede ser algún tipo de error de dependencia en el proyecto xcode que está produciendo los errores de enlace. – Tom

+0

Wow, muchas gracias. Perdí horas en esto y me salvaste de horas más. – Mups

1

que tenía los mismos errores, excepto que era para ARMv6. Los solucioné desmarcando "Compilar para el pulgar" en la configuración del proyecto para la biblioteca estática y el proyecto principal.

Cuestiones relacionadas