biblioteca no encontrada para -lPods

334

Recibí un error al archivar un proyecto. Este es mi entorno

  • Mac OS Lion
  • Xcode 4.3.1
  • iOS SDK 5.1

El objetivo de implementación del proyecto es:

IPHONEOS_DEPLOYMENT_TARGET 3.2

El error muestra:

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

Supongo que Pods es CocoaPods que utilicé para administrar las dependencias del proyecto XCode. https://github.com/CocoaPods/CocoaPods

Este es mi podfile

platform :ios  
dependency 'libPusher', '1.1'

¿No estoy seguro de lo que significa el error?

angelokh
fuente
Una causa del problema que ninguna de las respuestas cubrió. compruebe esta respuesta aquí: stackoverflow.com/questions/24050012/…
hasan

Respuestas:

611

¿Estás abriendo el espacio de trabajo (que fue generado por CocoaPods) en lugar del xcodeproj?

aleación
fuente
26
Yo hice. El problema se resuelve después de cambiar la arquitectura de lanzamiento del proyecto Pods a 'armv6 armv7'.
angelokh
10
Aha, en su Podfile, especifique la plataforma, así: platform :ios, :deployment_target => "3.2". Eso debería configurarlo correctamente la próxima vez que ejecute pod install.
aleación
248
Para ser claro para los novatos, deberías abrir el .xcworkspacearchivo, no el .xcodeproj. De esta manera, además de su proyecto, Xcode conoce el proyecto en el Pods/directorio y cómo construirlo libPods.a.
Jonathan Tran
13
Siguiendo el comentario de @ JonathanTran ... si tiene la .xcodeprojapertura, debe cerrarla antes de abrir el .xcworkspacearchivo.
Ross
44
Tenga en cuenta que el proyecto con el que está usando pods también debe tener su arquitectura establecida en armv6 armv7 (si esa es la opción que está usando en la arquitectura de proyecto de pods). Si no lo haces, obtendrás el mismo error.
Patrick Bassut
173

Separé la aplicación y los objetivos de prueba en el Podfile usando

target :App do
    
end

target :AppTests do
    
end

Esto dio como resultado dos nuevos productos libPods-App.a y libPods-AppTests.a , respectivamente, y dejaron el producto anterior libPods.a obsoleto. Tuve que eliminar este producto de la sección Enlace binario con bibliotecas de la configuración Fases de compilación de ambos objetivos.

Andras Hatvani
fuente
3
Sí, esto fue para mí, después de probar una docena de otras cosas anteriormente en este hilo. Mi podfile tiene dos objetivos como el anterior, por lo que libPods.a no se estaba construyendo. Eliminación de libPods.a de la sección Enlace Binario Con las bibliotecas de "fijo" (aunque, por supuesto, ahora tengo 32 "símbolos indefinido" mensajes para ordenar a través, debido a una falta lib SQLite, etc.
Hot Licks
Esta es la misma solución que stackoverflow.com/a/21694261/581994 y algunas otras.
Hot Licks
Actualmente todavía hay un problema que ocurre
nsantorello
"convirtieron el producto anterior libPods.a en obsoleto. Tuve que eliminar ..."
Vassily
Este fue principalmente el problema para mí. Por alguna razón, también tenía un binario de un objetivo de prueba anterior.
LJ Wilson
119

Me encontré con un problema similar hoy.

  1. Configuro un nuevo proyecto
  2. Instalé vainas de cacao
  3. Creé una nueva configuración Previewjunto con la existente DebugyRelease
  4. Ahora, al compilar esta nueva Previewconfiguración, el compilador no podrá vincularse con Pods y me dará este mensaje:

    ld: library not found for -lPods

La solución:

Lo que tenía que hacer era correr

 pod install

de nuevo y configurando cocoapods para la nueva Previewconfiguración. Actualizó mi proyecto, el espacio de trabajo y el archivo de proyecto del Pod y el problema desapareció

Besi
fuente
1
Esto también me sorprendió. Particularmente, ya que continuó funcionando mucho después de crear las configuraciones y fue solo cuando limpié mis datos derivados que ocurrió el problema.
Daniel Wood
Y preste atención a las advertencias que se muestran en la sección "Envío de estadísticas" de la salida de "pod install --verbose" o "pod update --verbose", como "El objetivo` yourApp [Debug] `anula el` HEADER_SEARCH_PATHS La configuración de compilación definida en ... "o" ... el objetivo anula la configuración de compilación `OTHER_LDFLAGS` ...".
jk7
cambiar la configuración de vista previa en la ruta de compilación de productos por configuración y luego instalar el pod, el pod no guarda mi valor en el proyecto del pod, ¿alguna ayuda?
liu pluto
Ah! El problema estaba ocurriendo justo después de crear una nueva configuración para Extensiones. Los primeros 3 pasos me ayudan a entender el problema. ¡Gracias!
iHarshil
70

Asegúrese de abrir .xcworkspace, no.xcodeproj

Michal Gumny
fuente
Este fue mi problema. Estaba abriendo el proyecto desde el archivo de proyecto Xcode normal. Una vez que comience a usar las vainas de cacao, debe comenzar a abrir su proyecto desde el archivo .xcworkspace, no desde el .xcodeproj.
HotFudgeSunday
jeje siempre hago esto :)
yeahdixon
ESTO ESTO ESTO ESTO
bryan
Dios mío, quiero abrazarte. ¡Cambié tantas cosas que nunca fueron el problema para empezar!
kjonsson el
53

No fue una solución que funcionó para mí, esto es realmente insoportable, hay un archivo libpods.a(que era de color rojo) ¡Lo eliminé y todo funciona bien! Saludos a mí;)

Hemang
fuente
66
Me pasó a mí también. Cambié el nombre de mi objetivo y creó este artefacto problemático. Un archivo.
seenickcode
Si hago esto, entonces las bibliotecas que agregué usando Cocoapods no se agregarán al proyecto.
Francisco Corrales Morales
1
me alegraron el día: D, había 2 objetivos y eliminé uno, pero sus pods aún no se pudieron construir, se resolvió simplemente eliminando la referencia de los pods de ese objetivo
mohammad alabid
Lo mismo me pasó a mí. Era un proyecto antiguo que no toqué durante años, todavía tenía el formato antiguo Podfile, etcétera.
Departamento B
46

Había dividido mis listas de pod en Podfilediferentes objetivos 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

Y corrió un pod install

Esto creó una nueva biblioteca libPods-ABC.aa la que mi binario tenía que vincularse. Pero el error fue que no eliminó la biblioteca anterior, es decir libPods.a.

Solución: Retire la biblioteca libPods.aa partir Build Phasesde Link Binary With Libraries.

Ayush Goel
fuente
Esta es la misma solución que stackoverflow.com/a/23085107/581994 y stackoverflow.com/a/21694261/581994
Hot Licks el
2
La solución es diferente. Esto me lo solucionó usando esta solución exacta.
cynistersix
Elimine la biblioteca libPods.ay luego, la instalación del pod solucionó el problema por mí.
bisma
1
se resolvió cuando se exportó el error IPHONEOS_DEPLOYMENT_TARGET = 9.0 con "ld: biblioteca no encontrada para -lPods"
jacksonfdam
Funciona para mí, después de cambiar el nombre del objetivo.
alsantos123
46

Tenía un viejo archivo libPod.a especificado (probablemente causado por el cambio de objetivos).

Configuración del proyecto -> Fases de construcción -> Enlace binario con bibliotecas

Por lo general, los cocoapodos solo incluirían una biblioteca, como libPods-target.ao libPods.a. Lo resolví eliminando el duplicado.

Sebastian Hojas
fuente
55
Esto funcionó para mí. Estaba agregando soporte de pod para los objetivos de prueba (* Tests y * UITests) y la configuración base cambió de Pods.debuga Pods-MyApp.debug, así que ahora solo necesito libPods-MyApp.a(había un icono "desvanecido" para el viejo libPods.a),
Nicolas Miari
No había un ícono desvanecido para mí, pero esta fue la única solución que funcionó.
Yogesh Maheshwari
Igual que aquí. Gracias
rmvz3
Cambié el nombre del proyecto y ocurre el error. La solución anterior funcionó para mí.
guness
44

si tiene problemas con esto en cocoapods v25 / Xcode 5

El proyecto Pods Xcode ahora establece la configuración de compilación ONLY_ACTIVE_ARCH en YES en la configuración de depuración. Tendrá que establecer lo mismo en su proyecto / destino, de lo contrario la compilación fallará.

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

ACTUALIZACIÓN Asegúrese de tener las últimas gemas / cocoapods

  • sistema de actualización de gemas
  • joya actualización cocoapods

Deberá reconstruir el proyecto utilizando Pod Install para reconstruir el proyecto.

johndpope
fuente
Esto fue todo para mí, después de agregar CP a un proyecto muy antiguo.
Josh Hudnall
Lo mismo para mí: agregué CP a un proyecto muy antiguo, podría construir en el simulador, pero tan pronto como cambié a compilar para dispositivo, la compilación falló. ¡Esa respuesta ayudó mucho!
Florian
40

Si Xcode se queja al vincular, por ejemplo, Biblioteca no encontrada para -lPods, no detecta las dependencias implícitas.

Vaya a Producto> Editar esquema Haga clic en Generar Agregue la biblioteca estática Pods y asegúrese de que esté en la parte superior de la lista Limpiar y compilar nuevamente Si eso no funciona, verifique que la fuente de la especificación que está tratando de incluir haya sido sacado de github. Haga esto buscando en / Pods /. Si está vacío (no debería estarlo), verifique que ~ / .cocoapods / master //. Podspec tenga la URL correcta de git hub. Si todavía no funciona, verifique la configuración de ubicaciones de compilación de XCode. Vaya a Preferencias -> Ubicaciones -> Datos derivados -> Avanzado y establezca la ubicación de compilación en "Relativo al espacio de trabajo".

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

HoratioCain
fuente
3
La primera parte solucionó mi problema (Producto> Editar esquema, agregar Pods para compilar como primer elemento). Gracias
William Power
Tuve este problema en xCode 6.3 con cocoapods 0.36.0, y esto es lo que lo solucionó. ¡Gracias!
ProgrammierTier
igual que xcode 6.3 cocoapods 0.37 -> ¡Gracias! se estaba volviendo loco con la configuración de objetivos, mientras que el problema era el esquema. solo agrega Pods.
altagir
36

Tuve el mismo problema cuando edité el Podfile agregando el objetivo que estaba usando sin un objetivo antes.

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

Después de preguntarme, encontré que en las propiedades de destino >> pestaña General >> Sección de Marcos y Bibliotecas Vinculadas, estaban los nuevos libPods-xxxx.a y el antiguo libPods.a

Acabo de eliminar libPods.a y todo funcionó bien.

Khaled Annajar
fuente
Ese fue el problema para mí también. Creo que la fuente del problema fue que actualicé CocoaPods y el formato del Podfile durante el desarrollo.
gklka
2
Tuve exactamente el mismo escenario después de agregar objetivo en el pod. +1 por precisión
Adriano Spadoni
27

El wiki de CocoaPods en GitHub tiene la respuesta correcta en sus preguntas frecuentes :

  • Ir Product > Edit Scheme
  • Haga clic en Build
  • Agregue la biblioteca estática Pods y asegúrese de que esté en la parte superior de la lista
  • Limpiar y construir de nuevo
  • Si eso no funciona, verifique que la fuente de la especificación que está tratando de incluir se haya extraído de github. Haga esto mirando hacia adentro <Project Dir>/Pods/<Name of spec you are trying to include>. Si está vacío (no debería estarlo), verifique que ~/.cocoapods/master/<spec>/<spec>.podspectenga la URL de Github correcta.
  • Si todavía no funciona, verifique la configuración de ubicaciones de compilación de XCode. Vaya Preferences -> Locations -> Derived Data -> Advancedy establezca la ubicación de compilación en "Relativo al espacio de trabajo".

Captura de pantalla

Chris Schiffhauer
fuente
66
También me he encontrado con este problema, pero parece que no puedo seguir estos pasos. Me atasco en "Agregar la biblioteca estática de pods y me aseguro de que esté en la parte superior de la lista". La biblioteca estática no aparece cuando hago clic para agregarla al esquema de compilación. ¿Alguna idea?
Bay Phillips
@BayPhillips Cierre su proyecto actual y abra el .xcworkspace creado en su carpeta de proyecto. luego aparece la biblioteca estática
Juneho Nam
12

Estaba cambiando el nombre del proyecto a "NBSelector" de "Socios".

Tuve el error "Biblioteca no encontrada para libPods-Partners" después de cambiar el nombre del proyecto. Xcode estaba intentando vincular al antiguo archivo Partners.a. Simplemente quítelo si tiene PodInstalled después de cambiar el nombre.

ingrese la descripción de la imagen aquí

Naloiko Eugene
fuente
solución perfecta para mi problema :) pero después de quitar las vainas, debe agregarlo nuevamente si desea usarlo
sábado
11

Usar ONLY_ACTIVE_ARCH = NO en todos los pods resolvió el problema para mí. Para hacer esto persistente, agregué un enlace post_install a mi 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 y tu estas listo.

Melle
fuente
8

¿Creó 'Distribución' o una configuración similar para hacer archivos Ad-Hoc y App Store? Como muchos otros, seguí las recomendaciones de Apple y denominé la configuración 'Release', la llamé 'Distribución' y establecí diferentes reglas de firma. Bueno, tal vez fue una recomendación antes de que introdujeran esquemas y la opción "Distribuir" en el Organizador, de todos modos, lo tenía antes.

Entonces tuve el mismo problema con Pods. Todo funcionó bien al depurar, pero el archivo falló con un error de enlace. Después de intentar esto y que cambié la configuración de archivo de mi proyecto original de 'Distribución' a 'Versión' y el error de enlace desapareció.

Sin embargo, el archivo no apareció en Organizer, aunque pude ubicarlo en el sistema de archivos, pero tenía un tamaño 0.

El último paso para solucionar todo esto fue cambiar la configuración de "Omitir instalación" para la configuración de 'Liberar' a "NO". Tenga en cuenta que debe hacer esto solo para su proyecto principal, pero no para el proyecto Pods. Mejor deje el proyecto Pods como está, ya que se genera cada vez que ejecuta 'pod install'.

Actualización Acabo de recibir una respuesta de los desarrolladores de CocoaPods No parece funcionar para mí, ya que tenía la configuración de Pods configurada correctamente. Pero podría ayudar a alguien más.

i4niac
fuente
8

En mi caso, el problema era que la ubicación de datos derivados de Xcode estaba configurada en la opción "Legacy". El objetivo de CocoaPods (libPods.a) se estaba construyendo correctamente, pero Xcode lo estaba buscando en el lugar equivocado.

Cambiarlo a "Único" (el predeterminado) resolvió el problema. Puede hacerlo yendo a Preferencias> Ubicaciones y haciendo clic en el botón Avanzado ...

Adam Sharp
fuente
Pero estoy en una situación en la que tengo que usar "Legacy", continuar buscando otra solución ...
CocoaBob
4

Descubrí que seleccionar "Buscar dependencias implícitas" (bajo el esquema de producto / edición) resolverá este problema en lugar de tener que agregar pods como objetivo.

StackRunner
fuente
También ejecutar la instalación de pod nuevamente puede ayudar una vez que siga estos pasos.
StackRunner
3

Revisé todas las respuestas aquí, pero para mí fue increíblemente simple ... Vaya a Target -> Build Fases, luego elimine libPods-YourProject.a, luego agréguelo nuevamente usando el "+". No te preocupes por que la biblioteca sea roja, está bien.

cph2117
fuente
3

Utilicé la versión anterior de cocoapod después de actualizar los cocoapods, me sugiere actualizar mi pod instalado debido a una actualización importante ya que actualizo después de mucho tiempo. Lo actualicé y los pods de la nueva versión se actualizaron bien. Pero después de eso recibí el error comolibrary not found for -lPods-xxxprojectName-xxxxxpodName

Después de probar tantas soluciones dadas como respuesta en este thred, nada de esto funcionó para mí. Luego fui a la configuración de mi proyecto y descubrí que la ruta de los pods era el cambio que estaba enOther Linker Flag

Verifique su Manage Schemesnombre de pod correcto y compárelo Other Linker Flag, cámbielo si no es similar

El viejo camino de la vaina era -l"lPods-xxxprojectName-xxxxxpodName"

Pero las nuevas vainas solo fueron xxxxxpodNameasí que las reemplacéOther Linker Flag por una nueva como la siguiente

Cambiado a la ruta del pod -l"xxxxxpodName" y funcionó.

No sé la razón perfecta detrás de esto, pero podría ser que esto ayude a alguien.

Bhavin_m
fuente
3

Abrí el espacio de trabajo, pero obtuve el mismo error.

Construir arquitectura activa solo configurado en

resuelve mi problema

Joeful6
fuente
Eso ayuda. Gracias. De alguna manera, se configuró "SÍ" para la depuración solo mientras que las configuraciones restantes tienen "NO" y he visto ese error para todas las compilaciones, excepto para la depuración.
Pavel Yakimenko
Esto solo me ayudó. La respuesta "Abrir como .workspace" es demasiado aburrida. Creo que los desarrolladores primero deben verificar los documentos de la guía de instalación con suficiente profundidad ...
KoreanXcodeWorker
2

Lo resolvió siguiendo los pasos a continuación:

  • Actualiza tu instalación de cocoapods. ($ [sudo] gem instalar cocoapods)
  • Vuelva a instalar sus dependencias en su proyecto. (instalación de pod)
  • Limpiar y reconstruir / archivar.
SarpErdag
fuente
Esto realmente funcionó muy bien. Había actualizado uno de los pods en mi proyecto y eso lo rompió. Seguí estos pasos y funcionó. Fue una solución rápida. Gracias
agarcian
2

En mi caso pod installsolucioné el problema, después de crear esquemas de distribución y lanzamiento.

Kernix
fuente
1

Tengo el mismo problema al archivar para enviar. La discusión sobre este tema se puede encontrar aquí: https://github.com/CocoaPods/CocoaPods/issues/155

En resumen, dos métodos funcionan para mí:

  1. Establecer "Preferencias -> Ubicaciones -> Avanzado" a "Personalizado (en relación con el espacio de trabajo)" O
  2. Establezca Podfile en - platform :ios, :deployment_target => "5.0"
BabyPanda
fuente
1

Usando Xcode 5 con iOS 7

Esto es lo que hice después de estar atrapado durante una hora. Elimine ARM64 de la Configuración de compilación> Arquitectura válida.

AGREGADO: Además, para mi caso, no se derivaba la ubicación de datos. Elegí único para la ubicación de construcción.

ytbryan
fuente
1

si estás usando iOS7 y Xcode 5, haz lo siguiente:

  • Seleccione su proyecto de vainas.
  • Vaya a Pods de destino y en Configuración de compilación, seleccione Arquitecturas-> Arquitecturas estándar (armv7, armv7s).
  • Haga lo mismo para cada objetivo de su proyecto Pods.
Rabenson
fuente
1

Intenté CADA respuesta en este hilo en vano. Finalmente resolvió mi problema haciendo coincidir la "Ruta de productos de compilación previa a la configuración" en mi proyecto de destino con el valor en el proyecto Pods. Resulta que estaban construyendo en dos ubicaciones de salida diferentes. Ninguna de las otras sugerencias en este hilo fueron relevantes para mí. Sería genial si XCode proporcionara una descripción de error útil (como POR QUÉ no puede usar lib - File Not Found, No se encontró arquitectura coincidente, etc.).

usuario3588900
fuente
1

En este problema, si ya instaló y actualizó el pod en su sistema, entonces su Xcode no puede encontrar la biblioteca Pods. Para resolver este problema, verifique las siguientes causas que pueden tener lugar:

  1. Estás utilizando el espacio de trabajo.
  2. Se construye la biblioteca Pods.
  3. La biblioteca Pods está referenciada en el grupo de productos de su proyecto.
  4. Su objetivo incluye la biblioteca Pods en el enlace con la fase de construcción de frameworks.
Gagan_iOS
fuente
1

tratar

link_with 'YouTarget1', 'YouTarget2' ...

Mi proyecto funcionó, los objetivos de repente dejaron de compilarse. Luego agregó "link_with" y volvió a la normalidad.

Aparentemente, ahora solo se conecta al primer objetivo, es lo que dice el enlace:

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

Ventas Wagner
fuente
este me lo arregló ... tenía el problema, que el primer objetivo se estaba construyendo y el segundo objetivo falló con "ld: biblioteca no encontrada para -lPods ..."
Muxor
1

Si todavía tiene este problema, intente:

pod update

Hizo el trabajo por mí, espero que esto te ayude.

Shobhit C
fuente