Récemment, je suis passé à Xcode4 et lors de la compilation de mon projet, une erreur s'est produite.
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
J'ai ouvert la bibliothèque Tapku et vérifié que ses architectures étaient définies sur Standard (armv6 armv7).
Que puis-je faire pour résoudre ce problème?
J'ai compris la cause du problème. J'ai changé 'Build Active Architecture Only' de TapkuLibrary de Yes en No et il se compile sans problème.
J'ai pu résoudre ce problème en faisant le contraire de la réponse acceptée - J'ai changé le paramètre 'Construire une architecture active uniquement' de NON à OUI.
Avait le même problème. Mais la raison était différente je suppose. J'utilisais le fichier library.a construit pour le simulateur et essayant de l'exécuter sur un périphérique .. en suis venu à savoir que j'avais besoin de différents fichiers .a pour le simulateur et le périphérique. J'espère que ça aidera quelqu'un ;)
J'ai rencontré ce problème lorsque j'ai mis à niveau le XCode vers 4.5 et iOS vers iOS6. Pour GMGridView, cela vient de se passer. Pas pour simulateur, mais seulement pour appareil.
J'ai corrigé le problème en procédant comme suit: 1) Allez dans le projet GMGridView -> Paramètres de construction 2. Sous Configuration -> Architectures, sélectionnez "Standard (armv7, armv7s)"
Puis nettoyez tout (y compris DerivedData) et reconstruisez.
J'espère que ça aide!
Essayez de supprimer l’architecture armv6 et ne le compilez que pour armv7.
Je l'ai géré en cliquant sur le projet "hostile" (dans mon cas, GMGridView) . Dans l'onglet "Architectures", j'ai modifié la valeur de quelque chose (je ne me souviens plus très bien, je suppose que c'était :) " armv6s "à" armv7, armv7 ". Après cela a fonctionné pour moi.
Cela a résolu le problème pour moi:
Certaines bibliothèques externes comme Three20 ont fait des réglages supplémentaires pour
Construire Paramètres-> Architectures-> N'importe quel SDK iOS
la valeur est "armv6 armv7", différente de la norme "armv7 armv7s
dérouler et sélectionnez "Standard", cela a fonctionné pour moi.
Une autre chose qui a fonctionné pour moi a été de veiller à ce que l'architecture soit définie pour armv6 et armv7 dans tous les sous-projets, en veillant à définir les objectifs TARGET et PROJECT de chaque sous-projet. Après avoir nettoyé et reconstruit tout, cela a fonctionné sans problème.
Assurez-vous que les variantes de construction de vos projets sont définies sur "normal".
Si vous construisez un projet qui inclut d'autres projets, consultez le dossier DerivedData pour le projet principal. Examinez les fichiers d’archive avec le fichier "lipo -info yourarchive.a". Examinez également les horodatages de ces archives. Vous constaterez peut-être que ces bibliothèques ne sont pas reconstruites ou que vous essayez de créer un lien avec une ancienne version de l’archive qui n’est pas la bonne architecture.
Dans mon cas, j'ai arrêté Xcode et supprimé le dossier DerivedData de mon projet principal. Cela a forcé une reconstruction complète lorsque j'ai rouvert le projet principal dans Xcode 4. La reconstruction complète a entraîné la création des archives i386 (ou la version correcte à trouver) et la liaison de la version du simulateur correctement.
J'ai réussi à résoudre ce problème en créant simplement une configuration ad-hoc dans les paramètres de Tapku info ...
Si j'obtiens l'avertissement de fichier ignoré - j'exécuterais lipo -info
sur un fichier ignoré pour trouver son architecture comme ci-dessous
lipo -info libTapkuLibrary.a
Cela imprimerait soit i386, armv6, armv7, armv7s, x86_64, etc. En général, cette architecture doit correspondre à votre plate-forme de construction cible. Par exemple.
Selon la non-concordance, vous devez reconstruire votre bibliothèque pour votre plate-forme cible ou modifier votre plate-forme cible.
Remarque: Pour les binaires fat, lipo -info
imprimera une combinaison des architectures ci-dessus.
Cela a fonctionné pour moi:
Cliquez sur le fichier 'Projet' du framework incriminé (xcodeproj).
Allez à l'onglet "Info" pour le "Projet" du framework (pas "Cible").
Développez "Configurations" et assurez-vous que "Debug" et "Release" ont deux configurations définies: une pour "Projet" du framework et une autre pour "Cible". Dans le cas des frameworks, la "cible" est compilée dans une bibliothèque et non une application, il est donc facile de s'y perdre.
"Debug" doit avoir le projet défini sur "Debug" et la bibliothèque défini sur "Partagé"
«Libérer» doit avoir le projet défini sur «Libérer» et la bibliothèque sur «Partagée».
Compiler, exécuter et profiter.
Si vous avez fini par compromettre l'ensemble de votre projet en essayant de résoudre ce problème, vous souhaiterez peut-être revérifier les phases de construction de votre application (comme l'a suggéré Gon). La bibliothèque doit être surlignée en rouge, même si elle n’existe pas sur votre lecteur. Sinon, tant qu'il est défini sur 'Partagé', vous devriez pouvoir le rajouter.
Si vous avez vraiment vraiment bouleversé votre projet, vous pourriez être forcé de vider votre dossier DerivedData, comme suggéré. Vérifiez également l’Organiseur, car Xcode permet de sauvegarder la merde un peu partout.
Oh, et vous avez vérifié que «armv6» est bien compris? :)
J'ai résolu ce problème grâce à un autre fil où ils montrent qu'armv6/armv7 est en réalité un peu différent de ce que vous pensez: Mise à niveau vers l'erreur xcode 4 Aucune architecture à compiler
J'ai essayé toutes les options ci-dessus et aucune n'a fonctionné.
C'est la bonne réponse:
le simple fait de faire glisser un cadre dans votre projet ne le liera pas correctement (ou quelque chose du genre, en tout cas)
ce que vous devez faire est de sélectionner le framework à ajouter dans Build Phases (cliquez sur l’icône bleue de votre projet, puis sélectionnez le nom de votre projet sous Cibles, puis sur l’onglet Build Phases), voir ici pour plus de référence.
Avait le même problème, et essayé diverses solutions de la page en vain ..__ J'ai toujours un message me disant que ma bibliothèque n'était pas construite pour arm64.
Enfin comment j'ai résolu le problème:
Il semble parfois que les paramètres de construction affichés par XCode soient incomplets et ne correspondent pas précisément au fichier make.
Aucune de ces réponses n'a fonctionné pour moi. (Message d’avertissement similaire, projet de bibliothèque statique différent). Pour moi, il s’agissait d’avoir configuré XCode pour tenir compte des répertoires de construction des cibles, puis d’avoir construit des cibles dans un répertoire local build/
à l’origine du problème. La configuration de XCOde pour l’utilisation du dossier "Derived data" a corrigé le problème.
J'ai eu ce problème avec la bibliothèque Three20. Ce qui a finalement été efficace pour moi, c’est de passer du format de projet de Xcode 3.1 à Xcode 3.2, laissant «non actif» à la compilation.