236 votes

Les symboles non définis pour l'architecture arm64

Je suis une Pomme de Mach-O de l'éditeur de liens d'Erreur à chaque fois que je l'importation d'un fichier à partir de CocoaPods.

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_FBSession", referenced from: someFile
ld: symbol(s) not found for architecture arm64

Je reçois environ 12 de ceux-ci, pour les différents Gousses que j'utilise.

Je suis en train de construire pour l'iPhone 5S à l'aide de XCode 5.

J'ai essayé diverses solutions, mais n'ai pas de travailler encore.

Comment puis-je corriger cette Pomme de Mach-O de l'éditeur de liens d'Erreur?

Votre aide est très appréciée. :)


Viens de trouver un autre message d'avertissement qui pourrait être intéressant, j'espère que cela me mène à la solution:

Ignoring file ~/Library/Developer/Xcode/DerivedData/SomeApp/Build/Products/Debug-iphoneos/libPods.a, 

file was built for archive which is not the architecture being linked (arm64):~/Library/Developer/Xcode/DerivedData/someApp/Build/Products/Debug-iphoneos/libPods.a

268voto

Chancy Points 1732

Si votre Architectures Et Valide les Architectures sont tous de droite, vous pouvez vérifier si vous avez d'ajouter $(hérité) à d'Autres Drapeaux de l'éditeur de liens ci-dessous. enter image description here

124voto

AdamG Points 2526

Le problème est que le cocoapods n'ont pas été construits pour l'architecture arm64 encore donc ils ne peuvent pas être liés lorsque vous générez. Il est probable que vous ne pouvez pas utiliser les paquets jusqu'à ce qu'ils soient mis à jour et l'utilisation que l'architecture. Vous pouvez corriger l'erreur liens en allant sur projet -> cible (le nom de votre projet) -> paramètres de construction et de changement d'architectures architectures standard (armv7, armv7s), et valide les architectures à armv7, armv7s.

Notez bien, cela signifie que vous n'obtiendrez pas la pleine puissance du processeur 64 bits. Vous avez dit que vous construisez pour le 5s, donc il y a peut être une raison quelconque vous avez besoin de cela. Si pour une raison absolument besoin de ce pouvoir (peut-être que vous êtes la construction d'un jeu), et a désespérément besoin de ces fichiers, vous pouvez soumettre une demande d'extraction et puis recompilez le projet de arm64 par la définition de ces mêmes champs à arm64 dans les fichiers que vous avez tiré de projets open source. Mais, à moins que vous vraiment besoin de ces fichiers 64 bits compatible, cela me semble un peu exagérer pour l'instant.

EDIT: Certaines personnes ont aussi signalé que le réglage de Construire Pour les Actifs d'Architectures OUI a également été nécessaire de résoudre ce problème.

Comme de 2014-04-28 le réglage doit ressembler à quelque chose comme ceci:

enter image description here

52voto

morisunshine Points 574

J'ai résolu ce problème en définissant:

ARCHS = armv7 armv7s

VALID_ARCHS = armv6 armv7 armv7s arm64

26voto

BabyPanda Points 877

Définir les Architectures à armv7 armv7s, Construire Active Seulement l'Architecture à PAS, à chaque cible dans le projet, y compris tous en Gousses

4voto

Fabio Russo Points 337

Je l'ai résolu en paramètre valide archs pour armv7 armv7s et réglage de construire active architectures seulement sur OUI dans la version et ensuite de faire une nouvelle "pod install" à partir de la ligne de commande

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X