libreria non trovata per -lPods


334

Ho ricevuto un errore durante l'archiviazione di un progetto. Questo è il mio ambiente.

  • Mac OS Lion
  • Xcode 4.3.1
  • SDK per iOS 5.1

L'obiettivo di distribuzione del progetto è:

IPHONEOS_DEPLOYMENT_TARGET 3.2

L'errore mostra:

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

Suppongo che Pods sia CocoaPods che ho usato per gestire le dipendenze del progetto XCode. https://github.com/CocoaPods/CocoaPods

Questo è il mio podfile

platform :ios  
dependency 'libPusher', '1.1'

Non sono sicuro del significato dell'errore?


Una causa del problema che nessuna delle risposte ha coperto. controlla questa risposta qui: stackoverflow.com/questions/24050012/…
hasan

Risposte:


611

Stai aprendo l'area di lavoro (che è stata generata da CocoaPods) invece di xcodeproj?


26
L'ho fatto. Il problema viene risolto dopo aver modificato l'architettura di rilascio del progetto Pods in "armv6 armv7".
angelokh,

10
Aha, nella tua Podfile, specificare la piattaforma in questo modo: platform :ios, :deployment_target => "3.2". Ciò dovrebbe configurarlo correttamente alla prossima esecuzione pod install.
lega

248
Per essere chiari per i neofiti là fuori, dovresti aprire il .xcworkspacefile, non il file .xcodeproj. In questo modo oltre al tuo progetto, Xcode conosce il progetto nella Pods/directory e come costruirlo libPods.a.
Jonathan Tran,

13
A seguito del commento di @ JonathanTran ... se hai l' .xcodeprojapertura devi averla chiusa prima di aprire il .xcworkspacefile.
Ross,

4
Nota che il progetto con cui stai usando i pod dovrebbe avere anche la sua architettura impostata su armv6 armv7 (se questa è l'opzione che stai usando sull'architettura del progetto pod). Se non lo fai, otterrai lo stesso errore.
Patrick Bassut,

173

Ho separato l'app e gli obiettivi di test nel Podfile usando

target :App do
    
end

target :AppTests do
    
end

Ciò ha comportato due nuovi prodotti libPods-App.a e libPods-AppTests.a , rispettivamente, e hanno reso obsoleto il precedente prodotto libPods.a . Ho dovuto rimuovere questo prodotto dalla sezione Link Binary With Libraries della configurazione Build Phases di entrambi i target.


3
Sì, questo è stato per me, dopo aver provato una dozzina di altre cose in precedenza in questo thread. Il mio podfile ha due obiettivi come sopra, quindi libPods.a non è stato creato. L'eliminazione di libPods.a dalla sezione Link Binary With Libraries lo ha "risolto" (anche se ovviamente ora ho 32 messaggi "Simboli indefiniti" da ordinare, a causa di una lib SQLite mancante, ecc.
Hot Licks,

Questa è la stessa correzione di stackoverflow.com/a/21694261/581994 e un paio di altre.
Hot Licks,

Attualmente si verifica ancora un problema
nsantorello il

"hanno reso obsoleto il precedente prodotto libPods.a. Ho dovuto rimuovere ..."
Vassily,

Questo è stato principalmente il problema per me. Per qualche motivo, avevo anche un binario da un vecchio obiettivo di test.
LJ Wilson,

119

Oggi ho riscontrato un problema simile.

  1. Ho creato un nuovo progetto
  2. Ho installato i baccelli di cacao
  3. Ho creato una nuova configurazione Previewinsieme a quella esistente DebugeRelease
  4. Ora durante la compilazione su questa nuova Previewconfigurazione, il compilatore non sarebbe in grado di collegarsi con Pods e mi dà questo messaggio:

    ld: library not found for -lPods

La soluzione:

Quello che dovevo fare era correre

 pod install

di nuovo e quindi configurando i cocoapodi per la nuova Previewconfigurazione. Ha aggiornato il mio progetto, l'area di lavoro e il file di progetto del Pod e il problema è scomparso


1
Anche questo mi ha sorpreso. Particolare poiché ha continuato a funzionare molto tempo dopo aver creato le configurazioni ed è stato solo quando ho ripulito i miei dati derivati ​​che si è verificato il problema.
Daniel Wood,

E presta attenzione agli avvertimenti visualizzati nella sezione "Statistiche di invio" dell'output di "pod install --verbose" o "pod update --verbose", come "Il target` yourApp [Debug] `sovrascrive` HEADER_SEARCH_PATHS `build setting definito in ..." o "... target sovrascrive` OTHER_LDFLAGS` build setting ... ".
jk7,

cambia la configurazione di anteprima in Percorso prodotti build per configurazione e quindi installa pod, pod non salva il mio valore nel progetto pod, qualche aiuto?
liu pluto,

Ah! Il problema si stava verificando subito dopo aver creato una nuova configurazione per le estensioni. I primi 3 passaggi mi aiutano a capire il problema. Grazie!
iHarshil,

70

Assicurati di aprire .xcworkspace, no.xcodeproj


Questo era il mio problema. Stavo aprendo il progetto dal normale file di progetto Xcode. Una volta che inizi a usare i baccelli di cacao, devi iniziare ad aprire il tuo progetto dal file .xcworkspace, non da .xcodeproj.
HotFudge domenica

hehe lo faccio sempre :)
yeahdixon

QUESTO QUESTO QUESTO
bryan

OMG Voglio abbracciarti. Ho cambiato così tante cose che non sono mai state il problema per cominciare!
kjonsson,

53

Non una soluzione ha funzionato per me, questo è davvero insopportabile, c'è un file libpods.a(che era di colore rosso) l'ho rimosso e tutto funzionava bene! Saluti a me;)


6
È successo anche a me. Avevo rinominato il mio obiettivo e questo ha creato questo file artefatto .a problematico.
seenickcode

Se lo faccio, le librerie che ho aggiunto usando Cocoapods non vengono aggiunte al progetto.
Francisco Corrales Morales,

1
hai fatto la mia giornata: D, c'erano 2 bersagli e ne ho cancellato uno ma i suoi baccelli non sono ancora riusciti e non sono stati costruiti, risolti semplicemente cancellando il riferimento dei baccelli di quel bersaglio
mohammad alabid

Lo stesso è successo a me. Era un vecchio progetto che non toccavo da anni, aveva ancora il vecchio formato Podfile eccetera.
Departamento B,

46

Avevo diviso i miei elenchi di pod in Podfileper diversi target come:

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

E corse a pod install

Questo ha creato una nuova libreria libPods-ABC.aa cui il mio binario doveva collegarsi. Ma il bug era che non cancellava la libreria precedentelibPods.a .

Soluzione: rimuovere la libreria libPods.ada Build Phasesdi Link Binary With Libraries.



2
La soluzione è diversa Questo mi ha risolto usando questa soluzione esatta.
cynistersix,

Rimuovi la libreria libPods.a e poi, pod install risolve il problema per me.
bisma,

1
risolto quando si esporta l'errore IPHONEOS_DEPLOYMENT_TARGET = 9.0 con "ld: libreria non trovata per -lPods"
jacksonfdam

Funziona con me, dopo aver rinominato il target.
alsantos123,

46

Avevo specificato un vecchio file libPod.a (probabilmente causato dalla mia modifica dei target).

Impostazioni progetto -> Fasi di costruzione -> Collega binario con librerie

Di solito, i cocoapodi includono solo una libreria, come libPods-target.ao libPods.a. L'ho risolto rimuovendo il duplicato.


5
Questo ha funzionato per me. Stavo aggiungendo il supporto pod per gli obiettivi di test (* Test e * UITest) e la configurazione di base è cambiata da Pods.debuga Pods-MyApp.debug, quindi ora ho solo bisogno libPods-MyApp.a(c'era un'icona "sbiadita" per il vecchio libPods.a),
Nicolas Miari,

Non c'era un'icona sbiadita per me, ma questa era l'unica soluzione che funzionava.
Yogesh Maheshwari

Anch'io. Grazie
rmvz3,

Ho cambiato il nome del progetto e si verifica l'errore. La soluzione sopra ha funzionato per me.
armata

44

se si verificano problemi con questo su cocoapods v25 / Xcode 5

Il progetto Pods Xcode ora imposta l'impostazione di build ONLY_ACTIVE_ARCH su YES nella configurazione di debug. Dovrai impostare lo stesso sul tuo progetto / target, altrimenti la compilazione fallirà.

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

AGGIORNAMENTO Assicurati di avere le gemme / i cocoapodi più recenti

  • sistema di aggiornamento gemma
  • gemma aggiornamento cocoapods

Dovrai ricostruire il progetto usando Pod Install per ricostruire il progetto.


Questo è stato per me, dopo aver aggiunto CP a un progetto molto vecchio.
Josh Hudnall,

Lo stesso per me: aggiunto CP a un progetto molto vecchio, potrebbe basarsi sul simulatore, ma non appena sono passato a costruire per dispositivo, la compilazione non è riuscita. Quella risposta ha aiutato molto!
Florian,

40

Se Xcode si lamenta durante il collegamento, ad es. Libreria non trovata per -lPods, non rileva le dipendenze implicite.

Vai a Prodotto> Modifica schema Fai clic su Genera Aggiungi la libreria statica Pods e assicurati che sia in cima all'elenco Pulisci e costruisci di nuovo Se non funziona, verifica che l'origine della specifica che stai provando a includere sia stata tirato da Github. Fallo guardando in / Pods /. Se è vuoto (non dovrebbe esserlo), verifica che ~ / .cocoapods / master //. Podspec contenga l'URL git hub corretto al suo interno. Se il problema persiste, controlla le impostazioni delle posizioni di build di XCode. Vai su Preferenze -> Posizioni -> Dati derivati ​​-> Avanzate e imposta la posizione di costruzione su “Relativa allo spazio di lavoro”.

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


3
La prima parte ha risolto il mio problema (Prodotto> Modifica schema, aggiungi Pod per costruire come primo elemento). Grazie
William Power il

Ho riscontrato questo problema in xCode 6.3 con cocoapods 0.36.0, e questo è ciò che l'ha risolto. Grazie!
ProgrammierTier

come xcode 6.3 cocoapods 0.37 -> Grazie !! stava impazzendo con le impostazioni del bersaglio, mentre il problema era lo schema. aggiungi solo Pod.
altagir,

36

Ho avuto lo stesso problema quando ho modificato il Podfile aggiungendo il target che stavo usando senza un target prima.

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

Dopo essermi chiesto, ho scoperto che sotto le proprietà di destinazione >> scheda Generale >> sezione Frame e librerie collegate, c'erano il nuovo libPods-xxxx.a e il vecchio libPods.a

Ho appena rimosso libPods.a e tutto ha funzionato bene.


Questo è stato il problema anche per me. Penso che la fonte del problema sia stata l'aggiornamento di CocoaPods e il formato del Podfile durante lo sviluppo.
gklka,

2
Ho avuto esattamente lo stesso scenario dopo aver aggiunto l'obiettivo sul pod. +1 per la precisione
Adriano Spadoni,

27

La wiki di CocoaPods su GitHub ha la risposta giusta nelle loro FAQ :

  • Vai a Product > Edit Scheme
  • Clicca su Build
  • Aggiungi la libreria statica Pods e assicurati che sia in cima all'elenco
  • Pulisci e costruisci di nuovo
  • Se il problema persiste, verifica che l'origine della specifica che stai tentando di includere sia stata estratta da Github. Fallo guardando <Project Dir>/Pods/<Name of spec you are trying to include>. Se è vuoto (non dovrebbe essere), verificare che il file~/.cocoapods/master/<spec>/<spec>.podspec URL github sia corretto.
  • Se il problema persiste, controlla le impostazioni delle posizioni di build di XCode. Vai a Preferences -> Locations -> Derived Data -> Advancede imposta il percorso di costruzione su "Relativo allo spazio di lavoro".

Immagine dello schermo


6
Ho riscontrato anche questo problema, ma non riesco a fare questi passaggi. Rimango bloccato su "Aggiungi la libreria statica dei pod e assicurati che sia in cima alla lista". La libreria statica non viene visualizzata con un clic per aggiungerla allo schema di generazione. Qualche idea?
Bay Phillips,

@BayPhillips Chiudi il tuo progetto corrente e apri lo spazio .xcworks creato nella cartella del tuo progetto. quindi viene visualizzata la libreria statica
Juneho Nam,

12

Stavo rinominando il progetto in "NBSelector" da "Partners".

Ho avuto l'errore "Libreria non trovata per libPods-Partners" dopo aver rinominato il progetto. Xcode stava cercando di collegarsi al vecchio file Partners.a. Rimuovilo se hai podInstalled dopo la ridenominazione.

inserisci qui la descrizione dell'immagine


soluzione perfetta per il mio problema :) ma dopo aver rimosso i pod è necessario aggiungerlo di nuovo se si desidera utilizzarlo
satheesh,

11

L'uso di ONLY_ACTIVE_ARCH = NO in tutti i pod ha risolto il problema per me. Per renderlo persistente, ho aggiunto un hook post_install al mio 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 e hai finito.


8

Hai creato "Distribuzione" o una configurazione simile per creare archivi Ad-Hoc e App Store? Come molti altri, ho seguito i consigli di Apple e ho soprannominato la configurazione "Release", l'ho chiamato "Distribution" e ho impostato diverse regole di firma. Beh, forse quella era una raccomandazione prima che introducessero schemi e l'opzione "Distribuisci" in Organizer, comunque, l'avevo appena ricevuto da prima.

Quindi ho avuto lo stesso problema con i pod. Tutto ha funzionato bene durante il debug, ma l'archiviazione non è riuscita con errore di collegamento. Dopo aver provato questo e quello, ho cambiato la configurazione dell'archivio del mio progetto originale da "Distribuzione" a "Rilascio" e l'errore del collegamento era sparito.

Tuttavia, l'archivio non è stato visualizzato in Organizer, sebbene sia stato possibile individuarlo nel file system, ma aveva dimensioni 0.

Il passaggio finale per risolvere tutto ciò è stato modificare l'impostazione "Ignora installazione" per la configurazione di "Rilascio" su "NO". Nota che devi farlo solo per il tuo progetto principale, ma non per il progetto Pods. Meglio lasciare il progetto Pods così com'è, poiché viene generato ogni volta che si esegue 'pod install'.

Aggiornamento Ho appena ricevuto una risposta dagli sviluppatori CocoaPods Non sembra funzionare per me, poiché la configurazione di Pods è stata impostata correttamente. Ma potrebbe aiutare qualcun altro.


8

Nel mio caso il problema era che la posizione dei dati derivati ​​di Xcode era impostata sull'opzione "Legacy". Il target CocoaPods (libPods.a) veniva costruito correttamente, ma Xcode stava cercando nel posto sbagliato.

Il passaggio a "Unico" (impostazione predefinita) ha risolto il problema. Puoi farlo andando su Preferenze> Posizioni e facendo clic sul pulsante Avanzate ...


Ma sono in una situazione in cui devo usare "Legacy", continuare a cercare un'altra soluzione ...
CocoaBob,



4

Ho scoperto che selezionando "Trova dipendenze implicite" (sotto schema prodotto / modifica) si risolverà questo problema invece di dover aggiungere pod come destinazione.


Anche eseguire di nuovo l'installazione pod può aiutare una volta seguendo questi passaggi.
StackRunner,

3

Ho esaminato tutte le risposte qui, ma per me è stato follemente semplice ... Vai su Target -> Build Phases, quindi rimuovi libPods-YourProject.a, quindi aggiungilo di nuovo usando "+". Non preoccuparti che la libreria sia rossa, va bene.


3

Ho usato la vecchia versione di cocoapod dopo l'aggiornamento dei cocoapods mi suggerisce di aggiornare il mio pod installato a causa di importanti aggiornamenti mentre aggiorno dopo molto tempo. Lo aggiorno e i nuovi pod di versione sono stati aggiornati bene. Ma dopo ho avuto l'errore comelibrary not found for -lPods-xxxprojectName-xxxxxpodName

Dopo aver provato così tante soluzioni fornite come risposta in questo thred, non di questo ha funzionato per me. Poi sono andato alle impostazioni del mio progetto e ho scoperto che il percorso dei pod era il cambiamento che era attivoOther Linker Flag

Controlla il Manage Schemesnome del tuo pod corretto e confrontalo in Other Linker Flag, modificalo se non simile

Era il vecchio percorso del pod -l"lPods-xxxprojectName-xxxxxpodName"

Ma i nuovi pod sono stati solo xxxxxpodNamecosì ho sostituito Other Linker Flagcon uno nuovo come di seguito

Modificato il percorso pod -l"xxxxxpodName"e ha funzionato.

Non conosco il motivo perfetto dietro questo, ma potrebbe essere di aiuto a qualcuno.


3

Ho aperto l'area di lavoro, ma ho riscontrato lo stesso errore.

Costruisci architettura attiva impostata su

risolvi il mio problema.


Questo aiuta. Grazie. In qualche modo è stato impostato "SÌ" per Debug solo mentre il resto config ha "NO" e ho visto quell'errore per tutte le build tranne Debug.
Pavel Yakimenko,

Questo mi ha solo aiutato. Tale risposta "Apri come .workspace" è troppo noiosa. Penso che gli sviluppatori dovrebbero prima controllare abbastanza attentamente i documenti della guida all'installazione ..
KoreanXcodeWorker

2

Risolto eseguendo i passaggi seguenti:

  • Aggiorna la tua installazione di cocoapods. ($ [sudo] gem install cocoapods)
  • Reinstalla le tue dipendenze nell'ambito del tuo progetto. (installazione pod)
  • Pulisci e ricostruisci / archivia.

In realtà ha funzionato molto bene. Avevo aggiornato uno dei pod nel mio progetto e questo lo ha rotto. Ho seguito questi passaggi e ha funzionato. È stata una soluzione rapida. Grazie
agarcian

2

Nel mio caso pod installrisolto il problema, dopo aver creato gli schemi di distribuzione e rilascio.


1

Ho avuto lo stesso problema durante l'archiviazione per l'invio. La discussione su questo problema è disponibile qui: https://github.com/CocoaPods/CocoaPods/issues/155

In sintesi, due metodi funzionano per me:

  1. Impostare "Preferenze -> Posizioni -> Avanzate" su "Personalizzato (relativo all'area di lavoro)" OPPURE
  2. Impostare Podfile su - platform :ios, :deployment_target => "5.0"

1

Utilizzo di Xcode 5 con iOS 7

Questo è quello che ho fatto dopo essere rimasto bloccato per un'ora. Rimuovere ARM64 dall'impostazione di costruzione> Architettura valida.

AGGIUNTO: Inoltre, nel mio caso, non è stata derivata la posizione dei dati. Ho scelto unico per la posizione di costruzione.


1

se stai usando iOS7 e Xcode 5, fai:

  • Seleziona il tuo progetto Pods.
  • Vai ai Pod di destinazione e in Impostazioni di costruzione, seleziona Architetture-> Architetture standard (armv7, armv7s).
  • Fai lo stesso per ogni Target del tuo progetto Pods.

1

Ho provato OGNI risposta in questa discussione senza risultati. Alla fine ho risolto il mio problema abbinando il "Percorso dei prodotti di compilazione pre-configurazione" nel mio progetto di destinazione con il valore nel progetto Pods. Si scopre che stavano costruendo in due diverse posizioni di output. Nessuno degli altri suggerimenti in questo thread erano rilevanti per me. Sarebbe bello se XCode fornisse un'utile descrizione dell'errore (come PERCHÉ non può usare la lib - File Not Found, Nessuna architettura corrispondente trovata, ecc.).


1

In questo numero, se hai già installato e aggiornato il pod nel tuo sistema, il tuo Xcode non è in grado di trovare la libreria Pod. Per risolvere il problema, verifica le seguenti cause che potrebbero verificarsi:

  1. Stai utilizzando l'area di lavoro.
  2. La libreria Pods viene compilata.
  3. La libreria Pods viene citata nel gruppo di prodotti del progetto.
  4. Il target include la libreria Pods nel collegamento con la fase di creazione dei framework.

1

provare

link_with 'YouTarget1', 'YouTarget2' ...

Il mio progetto ha funzionato, gli obiettivi hanno improvvisamente interrotto la compilazione. Quindi aggiunto "link_with" e tornato alla normalità.

Apparentemente, ora si collega al primo target, è ciò che dice il link:

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


questo ha risolto il problema per me ... aveva il problema, che il primo obiettivo stava costruendo e il secondo obiettivo non è riuscito con "ld: libreria non trovata per -lPods ..."
Muxor

1

Se il problema persiste, prova:

pod update

Ha funzionato per me, spero che questo ti aiuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.