biblioteca não encontrada para -lPods

334

Ocorreu um erro ao arquivar um projeto. Este é o meu ambiente.

  • Mac OS Lion
  • Xcode 4.3.1
  • iOS SDK 5.1

O destino de implantação do projeto é:

IPHONEOS_DEPLOYMENT_TARGET 3.2

O erro mostra:

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

Acho que o Pods é o CocoaPods que eu usei para gerenciar as dependências do projeto XCode. https://github.com/CocoaPods/CocoaPods

Este é o meu Podfile

platform :ios  
dependency 'libPusher', '1.1'

Não sei ao certo o que significa o erro?

angelokh
fonte
Uma causa do problema que nenhuma das respostas abordou. verifique esta resposta aqui: stackoverflow.com/questions/24050012/…
hasan

Respostas:

611

Você está abrindo o espaço de trabalho (que foi gerado pelo CocoaPods) em vez do xcodeproj?

Liga
fonte
26
Eu fiz. O problema foi resolvido após a alteração da arquitetura de lançamento do projeto Pods para 'armv6 armv7'.
angelokh
10
Aha, na sua Podfile, especifique a plataforma assim: platform :ios, :deployment_target => "3.2". Isso deve configurá-lo corretamente na próxima vez que você executar pod install.
liga
248
Para ficar claro para iniciantes por aí, você deve abrir o .xcworkspacearquivo, não o arquivo .xcodeproj. Dessa forma, além do seu projeto, o Xcode conhece o projeto no Pods/diretório e como construí-lo libPods.a.
Jonathan Tran
13
Seguindo o comentário de @ JonathanTran ... se você tiver o espaço .xcodeprojaberto, será necessário encerrá-lo antes de abrir o .xcworkspacearquivo.
Ross
4
Observe que o projeto com o qual você está usando pods também deve ter sua arquitetura definida como armv6 armv7 (se essa é a opção que você está usando na arquitetura de projeto de pods). Se você não fizer isso, receberá o mesmo erro.
Patrick Bassut
173

Separei o aplicativo e os destinos de teste no Podfile usando

target :App do
    
end

target :AppTests do
    
end

Isso resultou em dois novos produtos libPods-App.a e libPods-AppTests.a , respectivamente, e eles tornaram obsoleto o produto anterior libPods.a . Eu tive que remover este produto da seção Link Binary With Libraries da configuração Build Fhases de ambos os destinos.

Andras Hatvani
fonte
3
Sim, foi isso para mim, depois de tentar uma dúzia de outras coisas anteriormente neste tópico. Meu podfile possui dois alvos, como acima, e o libPods.a não estava sendo construído. A exclusão de libPods.a da seção Link Binary With Libraries "corrigiu" (embora, é claro, agora eu tenha 32 mensagens "Símbolos indefinidos" para classificar, devido a uma falta de lib SQLite, etc.)
Hot Licks
Essa é a mesma correção que stackoverflow.com/a/21694261/581994 e algumas outras.
Hot Licks
Atualmente ainda um problema que ocorre
nsantorello
"eles tornaram obsoleto o produto anterior libPods.a. Eu tive que remover ..."
Vassily
Este foi principalmente o problema para mim. Por alguma razão, eu também tinha um binário de um alvo de teste mais antigo.
LJ Wilson
119

Encontrei um problema semelhante hoje.

  1. Eu configurei um novo projeto
  2. Eu instalei vagens de cacau
  3. Eu criei uma nova configuração Previewjunto com os existentes DebugeRelease
  4. Agora, ao compilar nesta nova Previewconfiguração, o compilador não poderá vincular aos Pods e me enviar esta mensagem:

    ld: library not found for -lPods

A solução:

O que eu tinha que fazer era correr

 pod install

novamente e, assim, configurando os cocoapods para a nova Previewconfiguração. Atualizou meu projeto, o espaço de trabalho e o arquivo de projeto do Pod e o problema desapareceu

Besi
fonte
11
Isso me pegou de surpresa também. Particularmente porque ele continuou funcionando muito tempo depois que eu criei as configurações e foi somente quando eu limpei meus dados derivados que o problema ocorreu.
Daniel Madeira
E preste atenção aos avisos exibidos na seção "Estatísticas de envio" da saída de "pod install --verbose" ou "pod update --verbose", como "O destino` yourApp [Debug] `substitui o` HEADER_SEARCH_PATHS `configuração de configuração definida em ..." ou "... o destino substitui a configuração de configuração` OTHER_LDFLAGS` ... ".
Jk7 23/03
alterar a configuração da visualização no caminho de produtos de configuração por configuração e instalar o pod, o pod não salva meu valor no projeto do pod, ajuda?
Liu pluto
Ah! O problema estava ocorrendo logo após a criação de novas configurações para extensões. Os três primeiros passos me ajudam a entender o problema. Obrigado!
iHarshil 23/08/19
70

Certifique-se de abrir .xcworkspace, não.xcodeproj

Michal Gumny
fonte
Este foi o meu problema. Eu estava abrindo o projeto a partir do arquivo regular do projeto Xcode. Depois de começar a usar os casulos de cacau, é necessário começar a abrir seu projeto a partir do arquivo .xcworkspace, não do .xcodeproj.
HotFudgeSunday
hehe eu sempre faço isso :)
yeahdixon 20/03/2015
ESTE ESTE ESTE ESTE
bryan
OMG eu quero te abraçar. Mudou tantas coisas que nunca foram o problema para começar!
Kjonsson # 0619
53

Não foi uma solução que funcionou para mim, isso é realmente insuportável, há um arquivo libpods.a(que era vermelho), eu o removi e tudo está funcionando bem! Um brinde a mim;)

Hemang
fonte
6
Também aconteceu comigo. Eu havia renomeado meu destino e ele criou esse arquivo .a de artefato problemático.
Seenickcode
Se fizer isso, as bibliotecas adicionadas usando o Cocoapods não serão adicionadas ao projeto.
Francisco Corrales Morales
11
u fez o meu dia: D, houve 2 alvos e eu deletei um, mas suas vagens ainda e foi não conseguiu construir, resolvido por apenas referência de exclusão de vagens de que a meta
Mohammad alabid
O mesmo aconteceu comigo. Era um projeto antigo que eu não tocava há anos, ainda tinha o antigo formato Podfile etc.
Departamento B
46

Eu dividi minhas listagens de pods Podfilepara diferentes destinos, como:

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 correu um pod install

Isso criou uma nova biblioteca libPods-ABC.aà qual meu binário tinha que se conectar. Mas o erro foi que ele não excluiu a biblioteca anterior, ou seja,libPods.a .

Solução: Remova a biblioteca libPods.ade Build Phasesde Link Binary With Libraries.

Ayush Goel
fonte
2
A solução é diferente. Isso corrigiu para mim usando esta solução exata.
precisa saber é o seguinte
Remova a biblioteca libPods.a e, em seguida, a instalação do pod corrige o problema para mim.
bisma 22/02
11
-lo resolvido quando o erro é de exportação IPHONEOS_DEPLOYMENT_TARGET = 9.0 com "ld: biblioteca não encontrado para -lPods"
jacksonfdam
Funciona para mim, depois que eu renomeio o destino.
precisa saber é o seguinte
46

Eu tinha um arquivo libPod.a antigo especificado (provavelmente causado por mim alterando os destinos).

Configurações do projeto -> Fases de construção -> Vincular binário a bibliotecas

Geralmente, os cocoapods incluiriam apenas uma biblioteca, como libPods-target.aou libPods.a. Eu o resolvi removendo a duplicata.

Sebastian Hojas
fonte
5
Isso funcionou para mim. Eu estava adicionando suporte a pod para os destinos de teste (* Tests e * UITests) e a configuração básica foi alterada de Pods.debugpara Pods-MyApp.debug, então agora eu só preciso libPods-MyApp.a(havia um ícone "desbotado" para o antigo libPods.a),
Nicolas Miari
Não havia um ícone desbotado para mim, mas essa foi a única solução que funcionou.
Yogesh Maheshwari
O mesmo aqui. Graças
rmvz3
Mudei o nome do projeto e o erro acontece. A solução acima funcionou para mim.
guness
44

se você estiver com problemas com isso no cocoapods v25 / Xcode 5

O projeto Pods Xcode agora define a configuração de compilação ONLY_ACTIVE_ARCH como YES na configuração de Depuração. Você precisará definir o mesmo em seu projeto / destino, caso contrário, a compilação falhará.

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

ATUALIZAÇÃO Verifique se você tem as últimas gemas / cocoapods

  • sistema de atualização de gemas
  • atualização de gema cocoapods

Você deseja reconstruir o projeto usando o Pod Install para reconstruir o projeto.

johndpope
fonte
Foi isso para mim, depois de adicionar o CP a um projeto muito antigo.
Josh Hudnall
O mesmo para mim - adicionei o CP a um projeto muito antigo, podia ser construído no simulador, mas assim que eu mudei para o dispositivo, a construção falhou. Essa resposta ajudou muito!
Florian
40

Se o Xcode reclamar ao vincular, por exemplo, Biblioteca não encontrada para -lPods, ele não detectará as dependências implícitas.

Vá para Produto> Editar esquema Clique em Compilar Adicione a biblioteca estática de Pods e verifique se ela está no topo da lista Limpar e compilar novamente Se isso não funcionar, verifique se a fonte da especificação que você está tentando incluir foi puxado do github. Faça isso procurando em / Pods /. Se estiver vazio (não deveria estar), verifique se o ~ / .cocoapods / master //. Podspec possui o URL do hub git correto. Se ainda não funcionar, verifique as configurações dos locais de construção do XCode. Vá para Preferências -> Locais -> Dados Derivados -> Avançado e defina o local da construção como "Relativo ao Espaço de Trabalho".

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

HoratioCain
fonte
3
A primeira parte corrigiu meu problema (Produto> Editar esquema, adicione Pods ao Build como primeiro item). Obrigado
William Power
Eu tive esse problema no xCode 6.3 com cocoapods 0.36.0, e foi isso que o corrigiu. Obrigado!
ProgrammierTier
mesmo que xcode 6.3 cocoapods 0.37 -> Obrigado !! estava ficando louco com as configurações de destino, enquanto o problema era o esquema. basta adicionar Pods.
Altagir
36

Eu tive o mesmo problema quando editei o Podfile adicionando o destino que eu estava usando sem um destino antes.

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

Depois de me perguntar, descobri que, nas propriedades de destino >> guia Geral >> seção Frameworks e Bibliotecas Vinculadas, havia o novo libPods-xxxx.a e o antigo libPods.a

Acabei de remover libPods.a e tudo funcionou bem.

Khaled Annajar
fonte
Esse foi o problema para mim também. Penso que a fonte do problema foi que atualizei o CocoaPods e o formato do Podfile durante o desenvolvimento.
gklka
2
Eu tive exatamente o mesmo cenário depois de adicionar o alvo no pod. +1 para precisão
Adriano Spadoni
27

O wiki do CocoaPods no GitHub tem a resposta correta nas perguntas frequentes :

  • Vamos para Product > Edit Scheme
  • Clique em Build
  • Adicione a biblioteca estática de pods e verifique se ela está no topo da lista
  • Limpe e construa novamente
  • Se isso não funcionar, verifique se a fonte da especificação que você está tentando incluir foi extraída do github. Faça isso olhando para dentro <Project Dir>/Pods/<Name of spec you are trying to include>. Se estiver vazio (não deveria estar), verifique ~/.cocoapods/master/<spec>/<spec>.podspecse o URL do github está correto.
  • Se ainda não funcionar, verifique as configurações dos locais de construção do XCode. Vá para Preferences -> Locations -> Derived Data -> Advancede defina o local da construção como "Relativo ao espaço de trabalho".

Captura de tela

Chris Schiffhauer
fonte
6
Também deparei com esse problema, mas não consigo executar essas etapas. Fico preso em "Adicione a biblioteca estática de pods e verifique se ela está no topo da lista". A biblioteca estática não aparece com o clique para adicioná-lo ao esquema de compilação. Qualquer ideia?
Bay Phillips
@BayPhillips Feche seu projeto atual e abra o .xcworkspace criado na pasta do projeto. então a biblioteca estática aparece
Juneho Nam 27/12/18
12

Eu estava renomeando o projeto para "NBSelector" de "Partners".

Eu tive o erro "Biblioteca não encontrada para libPods-Partners" depois de renomear o projeto. O Xcode estava tentando vincular ao arquivo antigo Partners.a. Apenas remova-o se você tiver podInstalled após renomear.

insira a descrição da imagem aqui

Naloiko Eugene
fonte
solução perfeita para o meu problema :) mas depois de remover as vagens precisa acrescentou-lo novamente se você quiser usá-lo
satheesh
11

O uso de ONLY_ACTIVE_ARCH = NO em todos os pods resolveu o problema para mim. Para tornar isso persistente, adicionei um gancho post_install ao meu 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 pronto.

melle
fonte
8

Você criou 'Distribuição' ou configuração semelhante para criar arquivos Ad-Hoc e App Store? Como muitos outros, segui as recomendações da Apple e apelidei de configuração 'Release', chamei de 'Distribuição' e defini diferentes regras de assinatura. Bem, talvez essa tenha sido uma recomendação antes que eles introduzissem esquemas e a opção "Distribuir" no Organizer.

Então eu tive o mesmo problema com os pods. Tudo funcionou bem ao depurar, mas o arquivamento falhou com erro de link. Depois de tentar isso e que mudei a configuração de arquivo morto do meu projeto original de 'Distribuição' para 'Release' e o erro de link desapareceu.

No entanto, o arquivo não apareceu no Organizer, embora eu pudesse localizá-lo no sistema de arquivos, mas tinha tamanho 0.

A etapa final para corrigir tudo isso foi alterar a configuração "Ignorar instalação" da configuração 'Liberar' para "NÃO". Observe que você deve fazer isso apenas no projeto principal, mas não no projeto Pods. Melhor deixar o projeto do Pods como está, pois ele é gerado toda vez que você executa o 'pod install'.

Atualização Acabei de receber uma resposta do CocoaPods devs Parece que não funciona para mim, pois eu tinha a configuração do Pods definida corretamente. Mas isso poderia ajudar outra pessoa.

i4niac
fonte
8

No meu caso, o problema foi que o local dos Dados Derivados do Xcode foi definido como a opção "Legado". O destino CocoaPods (libPods.a) estava sendo construído corretamente, mas o Xcode estava procurando no lugar errado.

Mudar para "Exclusivo" (o padrão) resolveu o problema. Você pode fazer isso acessando Preferências> Locais e clicando no botão Avançado ....

Adam Sharp
fonte
Mas eu estou em uma situação que eu tenho que usar "Legacy", continuar a procurar outra solução ...
CocoaBob
4

Descobri que selecionar "Localizar dependências implícitas" (no esquema de produto / edição) resolverá esse problema em vez de precisar adicionar pods como destino.

StackRunner
fonte
A execução da instalação do pod novamente pode ajudar a seguir estas etapas.
StackRunner
3

Passei por todas as respostas aqui, mas, para mim, era incrivelmente simples ... Vá para Target -> Build Fhases, remova libPods-YourProject.a e adicione-o novamente usando o "+". Não se preocupe com a biblioteca ser vermelha, tudo bem.

cph2117
fonte
3

Eu usei a versão antiga do cocoapod depois de atualizar os cocoapods, ele sugere que eu atualize meu pod instalado por causa de grandes atualizações, pois eu atualizo após um longo tempo. Eu atualizá-lo e os pods da nova versão foram atualizados corretamente. Mas depois disso eu recebi o erro comolibrary not found for -lPods-xxxprojectName-xxxxxpodName

Depois de tentar tantas soluções dadas como resposta neste thred, nada disso funcionou para mim. Então eu fui para a configuração do meu projeto e descobri que o caminho dos pods estava alterado, o que estava acontecendoOther Linker Flag

Verifique seu Manage Schemesnome correto do pod e compare-o Other Linker Flag. Altere-o se não for semelhante

O caminho do pod antigo era -l"lPods-xxxprojectName-xxxxxpodName"

Mas novos pods só foram xxxxxpodNamesubstituídos Other Linker Flagpor um novo como abaixo

Alterado para o caminho do pod -l"xxxxxpodName"e funcionou.

Eu não sei o motivo perfeito por trás disso, mas pode ser que isso ajude alguém.

Bhavin_m
fonte
3

Abri a área de trabalho, mas recebi o mesmo erro.

Construir arquitetura ativa definida apenas como SIM

resolver meu problema.

Joeful6
fonte
Isso ajuda. Obrigado. De alguma forma, ele foi definido como "SIM" para depuração apenas enquanto o resto das configurações possui "NÃO" e eu vi esse erro para todas as compilações, exceto a depuração.
Pavel Yakimenko
Isso só me ajudou. Essa resposta 'Abrir como espaço de trabalho' é muito chata. Acho que os desenvolvedores devem primeiro verificar cuidadosamente os documentos do guia de instalação ..
KoreanXcodeWorker
2

Resolva-o seguindo as etapas abaixo:

  • Atualize sua instalação dos cocoapods. ($ [sudo] gem instala cocoapods)
  • Reinstale suas dependências no seu projeto. (instalação do pod)
  • Limpe e reconstrua / arquive.
SarpErdag
fonte
Isso realmente funcionou muito bem. Eu atualizei um dos pods do meu projeto e ele o quebrou. Eu segui esses passos e funcionou. Foi uma solução rápida. Obrigado
agarcian
2

No meu caso, pod installcorrigimos o problema, depois de criar esquemas de distribuição e lançamento.

kernix
fonte
1

Eu tenho o mesmo problema ao arquivar para enviar. A discussão sobre esse assunto pode ser encontrada aqui: https://github.com/CocoaPods/CocoaPods/issues/155

Em resumo, dois métodos funcionam para mim:

  1. Definir "Preferências -> Locais -> Avançado" para "Personalizado (em relação à área de trabalho)" OU
  2. Defina Podfile como - platform :ios, :deployment_target => "5.0"
BabyPanda
fonte
1

Usando o Xcode 5 com iOS 7

Foi o que fiz depois de ficar preso por uma hora. Remova o ARM64 de Configuração de construção> Arquitetura válida.

ADICIONADO: Além disso, no meu caso, não foi o local dos dados derivados. Eu escolhi exclusivo para o local da construção.

ytbryan
fonte
1

Se você estiver usando o iOS7 e o Xcode 5, faça:

  • Selecione seu projeto de pods.
  • Vá para os Pods de destino e, em Configurações de construção, selecione Arquiteturas-> Arquiteturas padrão (armv7, armv7s).
  • Faça o mesmo para todos os alvos do seu projeto de pods.
rabenson
fonte
1

Eu tentei CADA resposta neste tópico sem sucesso. Por fim, resolvi meu problema combinando o "Caminho dos produtos de construção de pré-configuração" no meu projeto de destino com o valor no projeto Pods. Acontece que eles estavam construindo em dois locais de saída diferentes. Nenhuma das outras sugestões neste tópico foi relevante para mim. Seria ótimo se o XCode fornecesse uma descrição útil do erro (como POR QUE ele não pode usar a lib - Arquivo não encontrado, Nenhuma arquitetura correspondente encontrada etc.).

user3588900
fonte
1

Nesta edição, se você já instalou e atualizou o pod em seu sistema, o seu Xcode não conseguiu encontrar a biblioteca de Pods. Para resolver esse problema, verifique as seguintes causas que podem ocorrer:

  1. Você está usando o espaço de trabalho.
  2. A biblioteca Pods é criada.
  3. A biblioteca de pods é referenciada no grupo de produtos do seu projeto.
  4. Seu destino inclui a biblioteca de Pods no link com a fase de criação de estruturas.
Gagan_iOS
fonte
1

tentar

link_with 'YouTarget1', 'YouTarget2' ...

Meu projeto funcionou, os alvos de repente pararam de compilar. Em seguida, adicionou "link_with" e retornou ao normal.

Aparentemente, agora apenas se conecta ao primeiro destino, é o que o link diz:

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

Wagner Sales
fonte
este fixa-lo para mim ... tinha o problema, que o primeiro alvo foi a construção e o segundo alvo falhou com "ld: biblioteca não encontrado para -lPods ..."
Muxor
1

Se você ainda está tendo esse problema, tente:

pod update

Fiz o trabalho para mim, espero que isso ajude você.

Shobhit C
fonte