Problema de Enlace Xcode4. Archivo fue construido para el archivo que no es la arquitectura que se vincula (arm6)


Recientemente, cambié a Xcode4 y cuando compilo mi proyecto obtuve el siguiente error.

ld: warning: ignoring file /Users/myname/Library/Developer/Xcode/DerivedData/appname-hezrgyqimckztgbdlslkavphdclw/Build/Products/Debug-iphoneos/libTapkuLibrary.a, file was built for archive which is not the architecture being linked (armv6)
Undefined symbols for architecture armv6:
  "_OBJC_CLASS_$_TKLoadingView", referenced from:
      objc-class-ref in RootViewController.o

Abrí la TapkuLibrary y comprobé que sus Arquitecturas estuvieran configuradas en 'Standard (armv6 armv7)'.

¿Qué puedo hacer para solucionar este problema?

Author: Seunghoon, 2011-03-14

17 answers

Averigüé qué causó el problema. Cambié 'Build Active Architecture Only' de TapkuLibrary de Sí a No y se compila sin ningún problema.

 111
Author: Seunghoon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-14 20:57:23

Pude resolver este problema haciendo lo contrario de la respuesta aceptada - Cambié el 'Construir solo Arquitectura Activa' de NO a SÍ.

 35
Author: Josh Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:30:01

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

Por ejemplo, aquí he importado diferentes archivos de biblioteca para el dispositivo y el simulador

 11
Author: Zaraki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-24 07:16:16

Me encontré con este problema cuando actualizé el XCode a 4.5 y iOS a iOS6. Para GMGridView, simplemente sucedió. No para simulador, sino solo para dispositivo.

Arreglé esto con los siguientes pasos: 1) Vaya a GMGridView project - > Build Settings 2) En Configuración -> Arquitecturas, seleccione " Estándar (armv7, armv7s)"

Luego limpia todo (incluyendo DerivedData) y reconstruye.

Espero que ayude!

 11
Author: sonoshin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-20 13:39:58

Intente eliminar la arquitectura armv6 y compílela solo para armv7.

 6
Author: Macmade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-15 22:59:01

Otra cosa que funcionó para mí fue asegurarme de que todos los subproyectos tuvieran la arquitectura configurada para armv6 y armv7, asegurándome de establecer tanto el OBJETIVO como el PROYECTO de cada subproyecto. Después de limpiar y reconstruir todo, funcionó sin problemas.

 2
Author: AndyDunn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-26 14:33:03

Esto resolvió el problema para mí:

Alguna biblioteca externa como three20 hizo ajustes adicionales para

Configuración de compilación->Arquitecturas - > Cualquier SDK de iOS

El valor es " armv6 armv7 "que es diferente del estándar"armv7 armv7s"

Desplegable y seleccione "Estándar", funcionó para mí.

 2
Author: Val,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-26 06:46:16

Lo manejé haciendo clic en el Proyecto "hostil" (en mi caso GMGridView). En la pestaña "Arquitecturas", cambié el valor de algo (ya no recuerdo exactamente, supongo que era:) "armv7, armv6s" a "armv7, armv7". Después de eso funcionó para mí.

 2
Author: tmighty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-10 05:56:41

Logré resolver esto simplemente creando una configuración adhoc dentro de la configuración de Tapku info ...

XCODE 4, Project > Archive = library not found for-lTapkuLibrary-Issues-devinross / tapkulibrary-GitHub

 1
Author: epinom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-05 13:18:38

Asegúrese de que las variantes de compilación en sus proyectos estén configuradas en "normal".

Si está construyendo un proyecto que incluye otros proyectos, eche un vistazo dentro de la carpeta DerivedData para el proyecto principal. Examine los archivos archivados con el archivo " lipo-info yourarchive.un". También, examine las marcas de tiempo en estos archivos. Usted puede encontrar que estas bibliotecas no están siendo reconstruidas o que está tratando de enlazar con una versión antigua del archivo que es la arquitectura incorrecta.

En mi case, apagué Xcode y eliminé la carpeta DerivedData para mi proyecto principal. Esto obligó a una reconstrucción completa cuando reabrí el proyecto principal en Xcode 4. La reconstrucción completa causó que se crearan los archivos i386 (o que se encontrara la versión correcta) y que la versión del simulador se vinculara correctamente.

 1
Author: russes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-03 05:33:13

Esto funcionó para mí :

  1. Haga clic en el archivo 'Project' del framework infractor (xcodeproj).

  2. Vaya a la pestaña" Información " para el 'Proyecto' del framework (no 'Destino').

  3. Expanda ' Configurations 'y asegúrese de que tanto' Debug 'como' Release 'tengan 2 configuraciones establecidas one una para el' Project 'del framework y otra para el'Target' del framework. En el caso de frameworks el 'Target' compila a una Biblioteca y no a una aplicación, por lo que es fácil confunde.

  4. 'Debug' debe tener el Proyecto establecido en 'Debug' y la Biblioteca establecida en 'Shared'

  5. 'Release' debería tener el Proyecto establecido en ' Release 'y la Biblioteca establecida en'Shared'

  6. Compila, ejecuta y disfruta.

  7. Si terminaste destrozando todo tu proyecto tratando de resolver esto, entonces es posible que quieras revisar las fases de construcción del proyecto de tu Aplicación (como sugirió Gon). La Biblioteca debe estar resaltada en rojo, incluso si no existe en su unidad. Si no, siempre y cuando esté configurado en 'Compartido', debería poder agregarlo nuevamente.

  8. Si realmente realmente destrozó su proyecto, entonces puede verse obligado a soplar su carpeta DerivedData, como russes sugirió. Además, revisa el 'Organizador', ya que Xcode tiene una forma de guardar basura por todo el lugar.

  9. Oh, y usted comprobó para asegurarse de que 'armv6' está allí, ¿verdad? :)

 1
Author: David Scott Kirby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-29 18:12:57

Si recibo la advertencia de archivo ignorado, ejecutaría lipo -info en el archivo ignorado para encontrar su arquitectura como se muestra a continuación

lipo -info libTapkuLibrary.a

Que imprimiría cualquiera de i386, armv6, armv7, armv7s, x86_64 etc. En general, esa arquitectura tiene que coincidir con su plataforma de compilación de destino. Por ejemplo,

  • i386 = simulador de ios o compilación de 32 bits en mac os x
  • armv6 armv7 arm7s = dispositivo ios
  • x86_64 = compilación de 64 bits en mac os x

Dependiendo del desajuste, o bien tienes que reconstruya su biblioteca para su plataforma de destino o cambie su plataforma de destino.

Nota: Para los binarios fat, lipo -info imprimirá una combinación de las arquitecturas anteriores.

 1
Author: Kiran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-19 06:25:16

Arreglé este problema gracias a otro hilo donde muestran que armv6 / armv7 es en realidad un poco diferente de lo que crees que es: Actualización a xcode 4 error No hay arquitecturas para compilar

 0
Author: pottedmeat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:14

Ninguna de estas respuestas funcionó para mí. (Mensaje de advertencia similar, proyecto de biblioteca estática diferente). Para mí fue haber configurado XCode para honrar los directorios de compilación de los destinos y luego tener destinos compilados en un directorio local build/ lo que causó el problema. La configuración de XCOde para usar la carpeta "Derived data" lo arregló.

 0
Author: PEZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-08 09:59:31

Tuve este problema con la biblioteca Three20. Lo que finalmente lo hizo por mí fue cambiar el Formato del proyecto de Xcode 3.1 a Xcode 3.2, dejando 'build active arch only' como "no".

 0
Author: FishStix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-03 07:01:41

Probé todas las opciones anteriores y ninguna funcionó.

Esta es la respuesta correcta:

Simplemente arrastrando un framework en tu proyecto no lo enlazará correctamente (o algo en este sentido, en cualquier caso)

Lo que debe hacer es seleccionar el marco que desea agregar en Build Phases (haga clic en el icono azul de su proyecto, luego seleccione el nombre de su proyecto en Targets, luego en la pestaña Build Phases), consulte aquí para obtener más información.

 0
Author: Gon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:53

Tuvo el mismo problema, y probó diversas soluciones desde la página en vano. Todavía tenía un mensaje diciéndome que mi biblioteca no estaba construida para arm64.

Finalmente cómo lo resolví:

  • abrió el proyecto.pbxproj para la biblioteca en un editor de texto
  • buscado VALID_ARCHS
  • hubo 4 ocurrencias, 2 de las cuales no contenían arm64
  • Agregué manualmente arm64 en la cadena (VALID_ARCHS = " arm64 i386 armv7 armv7s")
  • reconstruir la lib y todo estaba bien

Parece que a veces la configuración de compilación mostrada por XCode está incompleta y no se corresponde exactamente con el archivo make.

 0
Author: Eino Gourdin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-02 14:40:06