web-dev-qa-db-fra.com

bibliothèque non trouvée pour -lPods

J'ai eu une erreur lors de l'archivage d'un projet. Ceci est mon environnement.

  • Mac OS Lion
  • Xcode 4.3.1
  • iOS SDK 5.1

La cible de déploiement du projet est:

IPHONEOS_DEPLOYMENT_TARGET 3.2

L'erreur montre:

ld: library not found for -lPods
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Je suppose que Pods est un CocoaPods que j'ai utilisé pour gérer les dépendances de projets XCode. https://github.com/CocoaPods/CocoaPods

C'est mon podfile

platform :ios  
dependency 'libPusher', '1.1'

Je ne suis pas sûr de ce que l'erreur signifie?

317
angelokh

Ouvrez-vous l'espace de travail (généré par CocoaPods) au lieu de xcodeproj?

586
alloy

J'ai séparé l'application et les cibles de test dans le fichier podfile en utilisant

target :App do
    …
end

target :AppTests do
    …
end

Cela a abouti à deux nouveaux produits libPods-App.a et libPods-AppTests.a, respectivement, qui ont rendu le produit précédent libPods.a obsolète. J'ai dû supprimer ce produit de la configuration de la {section Lien binaire avec bibliothèques} de la configuration de la {phases de construction} des deux cibles. 

170
Andras Hatvani

J'ai rencontré un problème similaire aujourd'hui.

  1. Je met en place un nouveau projet
  2. J'ai installé des cabosses de cacao
  3. J'ai créé une nouvelle configuration Preview avec les Debug et Release existants
  4. Maintenant, lors de la compilation sur cette nouvelle configuration Preview, le compilateur ne pourrait pas se lier à des pods et me donner ce message

    ld: library not found for -lPods
    

La solution:

Ce que je devais faire était de courir

 pod install

à nouveau et ainsi configurer les cocoapods pour la nouvelle configuration Preview. Il a mis à jour mon projet, l'espace de travail et le fichier de projet du pod, et le problème a disparu

116
Besi

Assurez-vous que vous ouvrez .xcworkspace, pas .xcodeproj

63
Michal Gumny

Pas une solution qui a fonctionné pour moi, c’est vraiment insupportable, il y a un fichier libpods.a (qui était de couleur rouge) je l’ai enlevé et tout fonctionne bien! Bravo à moi;)

51
Hemang

J'avais divisé mes listes de pods dans la Podfile pour différentes cibles, telles que:

target :ABC do
  pod 'KissXML', '~> 5.0'
  pod 'libPhoneNumber-iOS', '~> 0.7.2'
end

target :ABCTests do
  pod 'OCMock', '~> 2.2.1', :inhibit_warnings => true
end

Et a couru un pod install

Cela a créé une nouvelle bibliothèque libPods-ABC.a à laquelle mon binaire devait se lier. Mais le problème était qu’elle n’avait pas supprimé la bibliothèque précédente, à savoir libPods.a.

Solution: Supprimez la bibliothèque libPods.a de Build Phases sur Link Binary With Libraries.

45
Ayush Goel

si vous rencontrez des problèmes avec cela sur cocoapods v25/Xcode 5 

Le projet Podcode Xcode définit maintenant le paramètre de construction ONLY_ACTIVE_Arch sur YES dans la configuration de débogage. Vous devrez définir la même chose sur votre projet/cible, sinon la construction échouera.

https://github.com/CocoaPods/CocoaPods/wiki/FAQ#running-into-build-failures-after-migrating-to-xcode-5-and-cocoapods-0250

MISE À JOUR Assurez-vous que vous avez les dernières gemmes/cocoapodes

  • système de mise à jour de gem 
  • gem mise à jour de cocoapods

Vous voudrez reconstruire le projet en utilisant Pod Install pour reconstruire le projet.

44
johndpope

J'avais un ancien fichier libPod.a spécifié (probablement dû au fait que je changeais de cible).

Paramètres du projet -> Phases de construction -> Lien binaire avec bibliothèques

En règle générale, les cocoapodes n'incluent qu'une seule bibliothèque, telle que libPods-target.a ou libPods.a. Je l'ai résolu en supprimant le duplicata.

43
Sebastian Hojas

Si Xcode se plaint lors de la liaison, par exemple, Bibliothèque introuvable pour -lPods, elle ne détecte pas les dépendances implicites.

Allez à Product> Edit SchemeCliquez sur Build Ajoutez la bibliothèque statique Pods et assurez-vous qu’elle se trouve en haut de la liste Nettoyez et reconstruisez à nouveau Si cela ne fonctionne pas, vérifiez que la source de la spécification que vous essayez d'inclure a été extraite de github. Faites cela en regardant dans/Pods /. S'il est vide (ce ne devrait pas être le cas), vérifiez que le fichier ~/.cocoapods/master //. Podspec contient l'URL du hub git correct . Si cela ne fonctionne toujours pas, vérifiez les paramètres de votre emplacement de compilation XCode. Allez dans Préférences -> Emplacements -> Données dérivées -> Avancé et définissez l'emplacement de construction sur «Relatif à l'espace de travail».

http://docs.cocoapods.org/guides/getting_started.html

37
HoratioCain

J'ai eu le même problème lorsque j'ai édité le Podfile en ajoutant la cible que j'utilisais sans cible auparavant.

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

Après m'être interrogé, j'ai constaté que, sous les propriétés de la cible >> onglet Général >> section Cadres et bibliothèques liés, voici le nouveau libPods-xxxx.a et l'ancien libPods.a

Je viens de retirer libPods.a et tout a bien fonctionné. 

36
Khaled Annajar

Le wiki de CocoaPods sur GitHub a la réponse directement dans leur FAQ :

  • Aller au Product > Edit Scheme
  • Cliquez sur Build
  • Ajoutez la bibliothèque statique Pods et assurez-vous qu’elle se trouve en haut de la liste.
  • Nettoyer et reconstruire
  • Si cela ne fonctionne pas, vérifiez que la source de la spécification que vous tentez d'inclure a bien été extraite de github. Faites cela en regardant dans <Project Dir>/Pods/<Name of spec you are trying to include>. S'il est vide (ce ne devrait pas être le cas), vérifiez que le ~/.cocoapods/master/<spec>/<spec>.podspec contient l'URL github correcte.
  • Si cela ne fonctionne toujours pas, vérifiez vos paramètres d'emplacement de génération XCode. Accédez à Preferences -> Locations -> Derived Data -> Advanced et définissez l'emplacement de génération sur "Relative à l'espace de travail".

Screen shot

27
Chris Schiffhauer

Je renommais le projet en "NBSelector" sous "Partenaires".

J'avais l'erreur "Bibliothèque introuvable pour libPods-Partners" après avoir renommé le projet. Xcode essayait de créer un lien vers l'ancien fichier Partners.a. Supprimez-le si vous avez podInstalled après avoir renommé.

enter image description here

11
Naloiko Eugene

Utiliser ONLY_ACTIVE_Arch = NO dans tous les pods a résolu le problème pour moi. Pour rendre cela persistant, j'ai ajouté un hook post_install à mon Podfile:

post_install do |installer_representation|
  installer_representation.project.targets.each do |target|
      target.build_configurations.each do |config|
            config.build_settings['ONLY_ACTIVE_Arch'] = 'NO'
      end
  end
end

pod install et vous avez terminé.

11
melle

Dans mon cas, le problème était que l'emplacement des données dérivées de Xcode était défini sur l'option "Legacy". La cible CocoaPods (libPods.a) était correctement construite, mais Xcode cherchait au mauvais endroit.

Le basculement sur "Unique" (valeur par défaut) a résolu le problème. Vous pouvez le faire en allant dans Préférences> Emplacements et en cliquant sur le bouton Avancé ....

8
Adam Sharp

Avez-vous créé «Distribution» ou une configuration similaire pour créer des archives Ad-Hoc et App Store? Eh bien, c’était peut-être une recommandation avant d’introduire des schémas et une option "Distribuer" dans Organizer, de toute façon, je l’avais juste avant.

Ensuite, j'ai eu le même problème avec les pods. Tout a bien fonctionné lors du débogage, mais l'archivage a échoué avec une erreur de liaison. Après avoir essayé ceci et cela, j'ai changé la configuration d'archivage de mon projet d'origine de 'Distribution' à 'Release' et l'erreur de lien avait disparu.

Pourtant, l'archive ne s'est pas affichée dans Organizer, bien que je puisse la localiser dans le système de fichiers, mais sa taille était 0.

La dernière étape pour remédier à tout cela a été de changer le paramètre "Ignorer l'installation" pour la configuration de "Validation" en "NON". Notez que vous devez le faire uniquement pour votre projet principal, mais pas pour le projet Pods. Il vaut mieux laisser le projet Pods en l’état, car il est généré à chaque fois que vous exécutez «l’installation du pod».

Update Je viens de recevoir une réponse de la part de dev. CocoaPods Cela ne semble pas fonctionner pour moi, car la configuration de Pods a été correctement définie . Mais cela pourrait aider quelqu'un d'autre.

8
i4niac

Ajouter uniquement les "Chemins de recherche de bibliothèque" (dans les paramètres de construction de "MyProject") à "Pods/build/Debug-iphonesimulator" a fonctionné pour moi (avec le simulateur).

Je l’ai compris ici: https://github.com/CocoaPods/CocoaPods/issues/121#issuecomment-5452473

5
Jan M

J'ai constaté que la sélection de "Rechercher les dépendances implicites" (sous le modèle produit/modification) résoudrait ce problème au lieu de devoir ajouter des modules en tant que cible.

4
StackRunner

Si vous archivez pour iOS7 et Xcode5 et que vous rencontrez ces erreurs, veuillez vous reporter à ce lien. Il semble que Apple abandonne une architecture dont les cosses de cacao avaient besoin https://github.com/CocoaPods/CocoaPods/pull/1352

4
John Paul Manoza

J'ai utilisé l'ancienne version de cocoapod après la mise à jour des cocoapods, il me suggère de mettre à jour mon pod installé à cause d'une mise à jour majeure lorsque je mets à jour après une longue période. Je le mets à jour et les nouveaux modules de version ont été mis à jour correctement. Mais après cela, j'ai eu l'erreur comme library not found for -lPods-xxxprojectName-xxxxxpodName

Après avoir essayé tant de solutions données comme réponse dans ce thred, aucune de cela n'a fonctionné pour moi. Ensuite, je suis allé dans les paramètres de mon projet et j'ai constaté que le chemin des pods était modifié, ce qui se trouvait sur Other Linker Flag

Vérifiez votre Manage Schemes pour le nom de pod correct et comparez-le dans Other Linker Flag, modifiez-le s'il n'est pas similaire

L'ancien chemin d'accès au pod était -l"lPods-xxxprojectName-xxxxxpodName"

Mais les nouveaux pods étaient seulement xxxxxpodName alors j’ai remplacé Other Linker Flag par un nouveau comme ci-dessous

Changé pour le chemin de pod -l"xxxxxpodName" et cela a fonctionné.

Je ne connais pas la raison parfaite derrière cela, mais cela pourrait aider quelqu'un. 

3
Bhavin_m

J'ai parcouru toutes les réponses ici, mais pour moi, c'était extrêmement simple ... Allez à Cible -> Construire les phases, puis supprimez libPods-YourProject.a, puis ajoutez-le à nouveau à l'aide du "+". Ne vous inquiétez pas de la couleur rouge de la bibliothèque, ça va.

3
cph2117

Dans mon cas, pod install a résolu le problème après la création de schémas de distribution et de publication.

2
kernix

Résolu en prenant les mesures ci-dessous: 

  • Mettez à jour votre installation de cocoapods. ($ [Sudo] gem installer cocoapods)
  • Réinstallez vos dépendances dans votre projet. (installation du pod)
  • Nettoyer et reconstruire/archiver. 
2
SarpErdag

si vous utilisez iOS7 et Xcode 5, procédez comme suit:

  • Sélectionnez votre projet Pods.
  • Accédez aux modules cible et dans les paramètres de construction, sélectionnez Architectures-> Architectures standard (armv7, armv7s).
  • Faites la même chose pour chaque cible de votre projet Pods.
1
rabenson

essayer 

link_with 'YouTarget1', 'YouTarget2' ...

Mon projet a fonctionné, les cibles ont soudainement cessé de se compiler. Puis ajouté "link_with" et retour à la normale. 

Apparemment, maintenant, il se connecte simplement à la première cible, est ce que le lien dit:

http://guides.cocoapods.org/syntax/podfile.html#link_with

1
Wagner Sales

Utilisation de Xcode 5 avec iOS 7

C'est ce que j'ai fait après avoir été bloqué pendant une heure. Supprimez ARM64 du paramètre de construction> Architecture valide. 

ADDED: En outre, dans mon cas, il ne s'agissait pas d'un emplacement de données dérivé. J'ai choisi unique pour l'emplacement de construction. 

1
ytbryan

J'ai eu le même problème lors de l'archivage pour soumettre. Des discussions sur ce sujet sont disponibles à l’adresse suivante: https://github.com/CocoaPods/CocoaPods/issues/155

En résumé, deux méthodes fonctionnent pour moi:

  1. Paramétrez "Préférences -> Emplacements -> Avancé" sur "Personnalisé (par rapport à un espace de travail)" OU
  2. Définissez Podfile sur - platform :ios, :deployment_target => "5.0"
1
BabyPanda

J'ai essayé chaque réponse dans ce fil en vain. Enfin, mon problème a été résolu en faisant correspondre le "Chemin des produits de génération de pré-configuration" de mon projet cible avec la valeur du projet Pods. Il s'avère qu'ils construisaient vers deux emplacements de sortie différents. Aucune des autres suggestions de ce fil n'était pertinente pour moi. Ce serait bien si XCode donnait une description d'erreur utile (comme pourquoi il ne peut pas utiliser lib - Fichier non trouvé, Aucune architecture correspondante trouvée, etc.).

1
user3588900

Dans ce numéro, si vous avez déjà installé et mis à jour le pod dans votre système, votre Xcode ne pourra pas trouver la bibliothèque de pods. Pour résoudre ce problème, veuillez vérifier les causes suivantes:

  1. Vous utilisez l'espace de travail.
  2. La bibliothèque Pods est construite.
  3. La bibliothèque Pods est référencée dans le groupe de produits de votre projet.
  4. Votre cible inclut la bibliothèque Pods dans la phase de création du lien avec les frameworks.
1
Gagan_iOS

Si vous rencontrez toujours ce problème, essayez:

pod update

A fait le travail pour moi, espérons que cela vous aide.

1
Shobhit C

J'ai ouvert l'espace de travail, mais j'ai eu la même erreur.

Construire une architecture active uniquement défini surYES

résoudre mon problème.

0
Joeful6

Pour simplifier la réponse de @ i4niac:

Une autre cause fréquente est une incompatibilité dans la configuration de construction du schéma . Dans notre cas, notre schéma 'AppName-AppStore' avait "Release" comme configuration de construction d'archive au lieu de "AppStore" autres).

0
yonix

J'ai résolu ce problème en définissant des architectures et des architectures valides identiques pour tous les modules comme pour mon projet. La solution du trou dans mon cas était donc:

  • mise à jour des gousses de cacao: Sudo gem mise à jour des gousses de cacao
  • pods de mise à jour: pod update
  • Dans vos pods, accédez à vos paramètres de construction> Architectures et définissez ici les architectures et architectures valides sur les mêmes valeurs que dans le projet principal.
0
Mumbar

J'ai eu le même problème. Il s’est avéré qu’il s’agissait d’un bogue xCode dans mon cas. Tout ce que je devais faire était d'enlever les "Arches valides", de les nettoyer, de les rajouter et j'étais prêt à partir. Essayez également les cocoapodes mis à jour en général.

0
anders

J'ai eu ça aussi, la version 0.28.0 de Cocoapods

Solution facile ici, pas de lecture interminable.

  • réinstaller les Cocoapods
  • démarrez le nouvel espace de travail créé. 
0
brainray

Il me manquait libPods.a dans target, donc la première chose à faire est de l'ajouter à frameworks et bibliothèques liés

Ensuite, Produit -> Construire pour -> Profilage/ (ou avant d'ajouter libPods.a, si vous le manquez complètement) 

et enfin, vérifiez votre script ressources de modules de copie dans phases de construction/ (si c'est la même chose que votre deuxième cible - cela dépend parfois de Podfile et de ses cibles). Ensuite, vous devez construire avec succès.

0
Jakub Truhlář

renommé le fichier some_project.workspace en some_project.workspace.backup et a exécuté l'installation $ pod Il a créé un nouveau fichier d'espace de travail et l'erreur a disparu.

0
Jdizzle Foshizzle

J'ai rencontré un problème où j'avais créé mon propre .xcworkspace qui conservait la forme des pods pour créer son propre (où est l'endroit où il attache sa bibliothèque). 

solution

J'ai déplacé le .xcworkspace que j'avais créé, exécuté à nouveau pod install, puis fusionné manuellement mon .xcworkspace avec celui pods créé en ouvrant les deux espaces de travail et en faisant glisser des fichiers d'un espace de travail à l'autre.

0
Jacksonkr

essayez d'ouvrir le fichier xcworkspace au lieu du fichier xcodeproj

0
Hoàng Nghĩa

Supprimer les dossiers de cache CocoaPods ~/Library/Caches/CocoaPods et le module d’installation me conviennent.

0
kaushal

Dans mon cas, le numéro 4 de la FAQ de ce lien m'a aidé: https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods

Si le problème persiste, vous pouvez essayer quelques solutions supplémentaires.

0
user511