bibliothèque introuvable pour -lPods

334

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

  • Lion Mac OS
  • Xcode 4.3.1
  • SDK iOS 5.1

L'objectif 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 CocoaPods que j'ai utilisé pour gérer les dépendances du projet XCode. https://github.com/CocoaPods/CocoaPods

Ceci est mon Podfile

platform :ios  
dependency 'libPusher', '1.1'

Je ne sais pas ce que signifie l'erreur?

angelokh
la source
Une cause du problème qu'aucune des réponses n'a couverte. vérifiez cette réponse ici: stackoverflow.com/questions/24050012/…
hasan

Réponses:

611

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

alliage
la source
26
J'ai fait. Le problème est résolu après avoir changé l'architecture de publication du projet Pods en «armv6 armv7».
angelokh
10
Aha, dans votre Podfile, spécifiez la plate - forme comme ceci: platform :ios, :deployment_target => "3.2". Cela devrait le configurer correctement lors de votre prochaine exécution pod install.
alliage
248
Pour être clair pour les débutants, vous devez ouvrir le .xcworkspacefichier, pas le .xcodeproj. De cette façon, en plus de votre projet, Xcode connaît le projet dans le Pods/répertoire et comment le construire libPods.a.
Jonathan Tran
13
À la suite du commentaire de @ JonathanTran ... si vous avez .xcodeprojouvert, vous devez le faire fermer avant d'ouvrir le .xcworkspacefichier.
Ross
4
Notez que le projet avec lequel vous utilisez des pods doit également avoir son architecture définie sur armv6 armv7 (si c'est l'option que vous utilisez sur l'architecture de projet des pods). Si vous ne le faites pas, vous obtiendrez la même erreur.
Patrick Bassut
173

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

target :App do
    
end

target :AppTests do
    
end

Il en est résulté respectivement deux nouveaux produits libPods-App.a et libPods-AppTests.a et ils ont rendu le produit précédent libPods.a obsolète. J'ai dû supprimer ce produit de la section Link Binary With Libraries de la configuration Build Phases des deux cibles.

Andras Hatvani
la source
3
Oui, c'était tout pour moi, après avoir essayé une douzaine d'autres choses plus tôt dans ce fil. Mon podfile a deux cibles comme ci-dessus, et donc libPods.a n'était pas en cours de construction. La suppression de libPods.a de la section Link Binary With Libraries l'a "corrigé" (bien que j'ai bien sûr maintenant 32 messages "Symboles indéfinis" à trier, en raison d'une bibliothèque SQLite manquante, etc.
Hot Licks
Il s'agit du même correctif que stackoverflow.com/a/21694261/581994 et quelques autres.
Hot Licks
Actuellement, toujours un problème qui se produit
nsantorello
"ils ont rendu le produit précédent libPods.a obsolète. J'ai dû retirer ..."
Vassily
C'était surtout le problème pour moi. Pour une raison quelconque, j'avais également un binaire d'une cible de test plus ancienne.
LJ Wilson
119

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

  1. Je mets en place un nouveau projet
  2. J'ai installé des cabosses de cacao
  3. J'ai créé une nouvelle configuration Previewavec l'existant DebugetRelease
  4. Maintenant, lors de la compilation de cette nouvelle Previewconfiguration, le compilateur ne serait pas en mesure de se lier aux pods et de 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 des cocoapods pour le nouveau Preview configuration. Il a mis à jour mon projet, l'espace de travail et le fichier de projet du Pod et le problème a disparu

Besi
la source
1
Cela m'a aussi attiré. Particulier car il a continué à fonctionner longtemps après avoir créé les configurations et ce n'est que lorsque j'ai nettoyé mes données dérivées que le problème s'est produit.
Daniel Wood
Et faites attention aux avertissements affichés dans la section "Statistiques d'envoi" de la sortie de "pod install --verbose" ou "pod update --verbose", comme "La cible` yourApp [Debug] `remplace la cible` HEADER_SEARCH_PATHS `build setting defined in ..." or "... target overrides the` OTHER_LDFLAGS` build setting ... ".
jk7
modifier la configuration de l' aperçu dans le chemin des produits de construction par configuration , puis installer le pod, le pod ne sauvegarde pas ma valeur dans le projet de pod, une aide?
liu pluto
Ah! Le problème se produisait juste après la création d'une nouvelle configuration pour les extensions. Les 3 premières étapes m'aident à comprendre le problème. Merci!
iHarshil
70

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

Michal Gumny
la source
C'était mon problème. J'ouvrais le projet à partir du fichier de projet Xcode normal. Une fois que vous commencez à utiliser des cosses de cacao, vous devez commencer à ouvrir votre projet à partir du fichier .xcworkspace, pas du .xcodeproj.
HotFudgeSunday
hehe je fais toujours ça :)
yeahdixon
CECI CECI CECI CECI
bryan
OMG, je veux te faire un câlin. Changé tellement de choses qui n'ont jamais été le problème au départ!
kjonsson
53

Aucune solution n'a fonctionné pour moi, c'est vraiment insupportable, il y a un fichier libpods.a(qui était de couleur rouge) je l'ai supprimé et tout fonctionnait bien! Bravo à moi;)

Hemang
la source
6
Cela m'est arrivé aussi. J'avais renommé ma cible et cela a créé ce fichier .a d'artefact problématique.
vuickcode
Si je le fais, les bibliothèques que j'ai ajoutées à l'aide de Cocoapods ne sont pas ajoutées au projet.
Francisco Corrales Morales
1
vous avez fait ma journée: D, il y avait 2 cibles et j'en ai supprimé une mais ses pods sont toujours et n'ont pas pu être construits, résolus en supprimant simplement la référence des pods de cette cible
mohammad alabid
La même chose m'est arrivée. C'était un vieux projet que je n'ai pas touché pendant des années, j'avais toujours l'ancien format Podfile etcetera.
Departamento B du
46

J'avais divisé mes listes de pods Podfilepour différentes cibles comme:

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 bug était qu'il n'a pas supprimé la bibliothèque précédente, c'est-à-direlibPods.a .

Solution: Retirez la bibliothèque à libPods.apartir Build Phasesde Link Binary With Libraries.

Ayush Goel
la source
Il s'agit du même correctif que stackoverflow.com/a/23085107/581994 et stackoverflow.com/a/21694261/581994
Hot Licks
2
La solution est différente. Cela m'a corrigé en utilisant cette solution exacte.
cynistersix
Supprimez la bibliothèque libPods.a, puis l'installation de pod corrige le problème pour moi.
bisma
1
il a résolu lorsque l'erreur est exportée IPHONEOS_DEPLOYMENT_TARGET = 9.0 avec "ld: bibliothèque introuvable pour -lPods"
jacksonfdam
Fonctionne pour moi, après avoir renommé la cible.
alsantos123
46

J'avais un ancien fichier libPod.a spécifié (probablement causé par mes changements de cibles).

Paramètres du projet -> Phases de construction -> Lier le binaire aux bibliothèques

Habituellement, les cocoapods n'incluraient qu'une seule bibliothèque, comme libPods-target.aou libPods.a. Je l'ai résolu en supprimant le doublon.

Sebastian Hojas
la source
5
Cela a fonctionné pour moi. J'ajoutais la prise en charge des pods pour les cibles de test (* Tests et * UITests) et la configuration de base est passée de Pods.debugà Pods-MyApp.debug, alors maintenant j'ai seulement besoin libPods-MyApp.a(il y avait une icône "fanée" pour les anciens libPods.a),
Nicolas Miari
Il n'y avait pas d'icône fanée pour moi mais c'était la seule solution qui fonctionnait.
Yogesh Maheshwari
Pareil ici. Merci
rmvz3
J'ai changé le nom du projet et l'erreur se produit. La solution ci-dessus a fonctionné pour moi.
guness
44

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

Le projet Pods Xcode définit désormais le paramètre de génération 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 d'avoir les derniers gemmes / cocoapodes

  • système de mise à jour des gemmes
  • mise à jour des cocoapodes

Vous souhaiterez reconstruire le projet à l'aide de Pod Install pour reconstruire le projet.

johndpope
la source
C'était tout pour moi, après avoir ajouté CP à un très vieux projet.
Josh Hudnall
Même chose pour moi - ajouté CP à un très vieux projet, pourrait s'appuyer sur le simulateur, mais dès que je suis passé à la génération pour l'appareil, la construction a échoué. Cette réponse a beaucoup aidé!
Florian
40

Si Xcode se plaint lors de la liaison, par exemple, bibliothèque non trouvée pour -lPods, il ne détecte pas les dépendances implicites.

Allez dans Produit> Modifier le schéma Cliquez sur Créer Ajouter la bibliothèque statique des pods et assurez-vous qu'elle est en haut de la liste Nettoyer et reconstruire Si cela ne fonctionne pas, vérifiez que la source de la spécification que vous essayez d'inclure a été tiré de github. Pour ce faire, recherchez dans / Pods /. S'il est vide (il ne devrait pas l'être), vérifiez que le ~ / .cocoapods / master //. Podspec contient l'URL correcte du hub git. Si cela ne fonctionne toujours pas, vérifiez vos paramètres d'emplacement de génération XCode. Accédez à Préférences -> Emplacements -> Données dérivées -> Avancé et définissez l'emplacement de génération sur «Relatif à l'espace de travail».

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

HoratioCain
la source
3
La première partie a résolu mon problème (Produit> Modifier le schéma, ajouter des pods à construire comme premier élément). Merci
William Power
J'ai eu ce problème dans xCode 6.3 avec des cocoapods 0.36.0, et c'est ce qui l'a résolu. Je vous remercie!
ProgrammierTier
même que xcode 6.3 cocoapods 0.37 -> Merci !! devenait fou avec les paramètres cibles, alors que le problème était le schéma. il suffit d'ajouter des pods.
altagir
36

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 trouvé que sous les propriétés cibles >> onglet Général >> section Frameworks et bibliothèques liés, il y avait le nouveau libPods-xxxx.a et l'ancien libPods.a

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

Khaled Annajar
la source
C'était aussi le problème pour moi. Je pense que la source du problème est que j'ai mis à jour CocoaPods et le format du Podfile pendant le développement.
gklka
2
J'ai eu exactement le même scénario après avoir ajouté une cible sur le pod. +1 pour la précision
Adriano Spadoni
27

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

  • Aller à Product > Edit Scheme
  • Cliquer sur Build
  • Ajoutez la bibliothèque statique Pods et assurez-vous qu'elle est en haut de la liste
  • Nettoyer et reconstruire
  • 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-le en regardant <Project Dir>/Pods/<Name of spec you are trying to include>. S'il est vide (il ne devrait pas l'être), vérifiez que le~/.cocoapods/master/<spec>/<spec>.podspec contient l'url de 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 -> Advancedet définissez l'emplacement de génération sur "Relatif à l'espace de travail".

Capture d'écran

Chris Schiffhauer
la source
6
J'ai également rencontré ce problème, mais je n'arrive pas à suivre ces étapes. Je suis bloqué à "Ajouter la bibliothèque statique des pods et je m'assure qu'elle est en haut de la liste". La bibliothèque statique n'apparaît pas lorsque je clique pour l'ajouter au schéma de génération. Une idée?
Bay Phillips
@BayPhillips Fermez votre projet actuel et ouvrez le .xcworkspace créé dans votre dossier de projet. puis la bibliothèque statique apparaît
Juneho Nam
12

Je renommais le projet en "NBSelector" de "Partners".

J'ai eu l'erreur «Bibliothèque introuvable pour libPods-Partners» après avoir renommé le projet. Xcode essayait de se lier à l'ancien fichier Partners.a. Supprimez-le simplement si vous avez installé podInstall après l'avoir renommé.

entrez la description de l'image ici

Naloiko Eugene
la source
solution parfaite à mon problème :) mais après avoir retiré les pods, vous devez l'ajouter à nouveau si vous voulez l'utiliser
satheesh
11

L'utilisation de ONLY_ACTIVE_ARCH = NO dans tous les modules a résolu le problème pour moi. Pour rendre cela persistant, j'ai ajouté un crochet 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 tu as fini.

melle
la source
8

Avez-vous créé une «distribution» ou une configuration similaire pour créer des archives ad hoc et App Store? Comme beaucoup d'autres, j'ai suivi les recommandations d'Apple et surnommé la configuration `` Release '', je l'ai appelé `` Distribution '' et lui ai défini différentes règles de signature. Eh bien, c'était peut-être une recommandation avant d'introduire des schémas et l'option "Distribuer" dans l'Organisateur, 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 lien. 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 a disparu.

Pourtant, l'archive n'est pas apparue dans l'Organiseur, bien que je puisse la localiser dans le système de fichiers, mais elle avait une taille nulle.

La dernière étape pour résoudre tout cela était de changer le paramètre "Ignorer l'installation" pour la configuration de "Libération" sur "NON". Notez que vous devez le faire uniquement pour votre projet principal, mais pas pour le projet Pods. Mieux vaut laisser le projet Pods tel quel, car il est généré à chaque fois que vous exécutez «pod install».

Mise à jour Je viens de recevoir une réponse des développeurs CocoaPods Cela ne semble pas fonctionner pour moi, car la configuration des pods était correctement définie. Mais cela pourrait aider quelqu'un d'autre.

i4niac
la source
8

Dans mon cas, le problème était que l'emplacement des données dérivées de Xcode était réglé sur l'option "Legacy". La cible CocoaPods (libPods.a) était en cours de construction correctement, mais Xcode la recherchait au mauvais endroit.

Le basculer sur "Unique" (par défaut) a résolu le problème. Pour ce faire, accédez à Préférences> Emplacements et cliquez sur le bouton Avancé ...

Adam Sharp
la source
Mais je suis dans une situation où je dois utiliser "Legacy", continuer à chercher une autre solution ...
CocoaBob
4

J'ai trouvé que la sélection de "Rechercher les dépendances implicites" (sous le schéma de produit / édition) résoudra ce problème au lieu d'avoir à ajouter des pods comme cible.

StackRunner
la source
L'exécution à nouveau de l'installation de pod peut également vous aider à suivre ces étapes.
StackRunner
3

J'ai parcouru toutes les réponses ici, mais pour moi, c'était incroyablement simple ... Allez dans Target -> Build Phases, puis supprimez libPods-YourProject.a, puis ajoutez-le à nouveau en utilisant le "+". Ne vous inquiétez pas si la bibliothèque est rouge, ça va.

cph2117
la source
3

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

Après avoir essayé tant de solutions données en réponse à ce problème, rien de tout cela n'a fonctionné pour moi. Ensuite, je suis allé dans le cadre de mon projet et j'ai constaté que le chemin des modules était un changement qui était activéOther Linker Flag

Vérifiez votre Manage Schemesnom de pod correct et comparez-le Other Linker Flag, changez-le s'il n'est pas similaire

Ancien chemin de pod était -l"lPods-xxxprojectName-xxxxxpodName"

Mais les nouveaux pods étaient seulement xxxxxpodNamesi je les ai remplacés Other Linker Flagpar des nouveaux comme ci-dessous

Changé en 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.

Bhavin_m
la source
3

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

Construire une architecture active uniquement définie sur OUI

résoudre mon problème.

Joeful6
la source
Qui aide. Je vous remercie. D'une manière ou d'une autre, il a été défini sur "OUI" pour le débogage uniquement tandis que les autres configurations le définissent sur "NON" et j'ai vu cette erreur pour toutes les versions, sauf le débogage.
Pavel Yakimenko
Cela m'a seulement aidé. Une telle réponse «Ouvrir en tant que .workspace» est trop ennuyeuse. Je pense que les développeurs devraient d'abord vérifier suffisamment les documents du guide d'installation.
KoreanXcodeWorker
2

Résolu en suivant les étapes ci-dessous:

  • Mettez à jour votre installation de cocoapods. ($ [sudo] gem install cocoapods)
  • Réinstallez vos dépendances sous votre projet. (installation du pod)
  • Nettoyer et reconstruire / archiver.
SarpErdag
la source
En fait, cela a très bien fonctionné. J'avais mis à jour l'un des pods de mon projet et ça l'a cassé. J'ai suivi ces étapes et cela a fonctionné. C'était une solution rapide. Merci
agarcian
2

Dans mon cas, j'ai pod installrésolu le problème, après avoir créé des schémas de distribution et de publication.

kernix
la source
1

J'ai eu le même problème lors de l'archivage pour la soumission. La discussion sur ce problème peut être trouvée ici: https://github.com/CocoaPods/CocoaPods/issues/155

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

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

Utilisation de Xcode 5 avec iOS 7

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

AJOUT: De plus, pour mon cas, il ne s'agissait pas d'un emplacement de données dérivé. J'ai choisi un emplacement unique pour la construction.

ytbryan
la source
1

si vous utilisez iOS7 et Xcode 5, faites:

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

J'ai essayé CHAQUE réponse dans ce fil en vain. Enfin, j'ai résolu mon problème en faisant correspondre le «chemin des produits de construction 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 ne me concernait. Ce serait génial si XCode donnait une description d'erreur utile (comme POURQUOI il ne peut pas utiliser la lib - Fichier non trouvé, Aucune architecture correspondante trouvée, etc.).

user3588900
la source
1

Dans ce problème, si vous avez déjà installé et mis à jour le pod dans votre système, votre Xcode ne peut pas trouver la bibliothèque Pods. Pour résoudre ce problème, veuillez rechercher les causes suivantes qui peuvent survenir:

  1. Vous utilisez l'espace de travail.
  2. La bibliothèque Pods se construit.
  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 le lien avec la phase de construction des frameworks.
Gagan_iOS
la source
1

essayer

link_with 'YouTarget1', 'YouTarget2' ...

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

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

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

Ventes Wagner
la source
celui-ci l'a corrigé pour moi ... avait le problème, que la première cible était en cours de construction et la deuxième cible a échoué avec "ld: bibliothèque introuvable pour -lPods ..."
Muxor
1

Si vous rencontrez toujours ce problème, essayez:

pod update

A fait le travail pour moi, j'espère que cela vous aidera.

Shobhit C
la source