找不到-lPods的库


334

归档项目时出现错误。这是我的环境。

  • Mac OS Lion
  • Xcode 4.3.1
  • iOS SDK 5.1

项目部署目标是:

IPHONEOS_DEPLOYMENT_TARGET 3.2

错误显示:

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

我想Pods是我用来管理XCode项目依赖项的CocoaPods。 https://github.com/CocoaPods/CocoaPods

这是我的Podfile

platform :ios  
dependency 'libPusher', '1.1'

我不确定错误是什么意思?


没有答案涵盖的问题原因。这里检查这个答案:stackoverflow.com/questions/24050012/...
哈桑

Answers:


611

您是否要打开工作区(由CocoaPods生成)而不是xcodeproj?


26
是的 将Pods项目的发行架构更改为'armv6 armv7'后,此问题已解决。
angelokh 2012年

10
啊哈,请在您的服务器Podfile中指定平台,如下所示:platform :ios, :deployment_target => "3.2"。那应该在下次运行时正确配置它pod install
合金

248
为了让新手不知所措,您应该打开.xcworkspace文件,而不是打开文件.xcodeproj。这样,除了您的项目外,Xcode还知道Pods/目录中的项目以及如何构建libPods.a
乔纳森·陈

13
接下来是@JonathanTran的注释...如果您有.xcodeproj打开的.xcworkspace文件,则需要在打开文件之前将其关闭。
罗斯

4
请注意,您正在使用Pod的项目也应该将其架构设置为armv6 armv7(如果那是您在Pods项目架构上使用的选项)。如果不这样做,您将得到同样的错误。
Patrick Bassut 2014年

173

我使用以下命令将应用程序和测试目标分隔在Podfile中

target :App do
    
end

target :AppTests do
    
end

这导致分别产生了两个新产品libPods-App.alibPods-AppTests.a,它们使以前的产品libPods.a过时了。我必须从两个目标的“ 构建阶段”配置的“ 与库链接二进制文件”部分删除此产品。


3
是的,在此线程前面尝试了十几种其他事情之后,对我来说就是这样。我的podfile具有上述两个目标,因此未构建libPods.a。删除libPods.a从“固定”链接二进制与图书馆部分它(尽管当然我现在有32个“未定义的符号”消息,以通过排序,因为缺少一个SQLite的LIB,等等
热舔

此修复程序与stackoverflow.com/a/21694261/581994以及其他几个修复程序相同。
2014年

目前仍然发生问题
nsantorello,2015年

“他们淘汰了以前的产品libPods.a。我不得不删除...”
Vassily

这主要是我的问题。由于某种原因,我也有一个来自较早测试目标的二进制文件。
LJ威尔逊

119

我今天遇到了类似的问题。

  1. 我建立了一个新项目
  2. 我安装了可可豆荚
  3. 我创建了一个新的配置Preview与现有的沿DebugRelease
  4. 现在,当在此新Preview配置上进行编译时,编译器将无法与Pods链接并给出以下消息:

    ld: library not found for -lPods

解决方案:

我要做的就是跑步

 pod install

再次为新Preview配置配置cocoapods 。它更新了我的项目,工作区和Pod的项目文件,问题消失了


1
这也吸引了我。特别是在创建配置后很长一段时间,它仍然可以正常工作,只有当我清除派生数据后,问题才出现。
Daniel Wood

并注意“ pod install --verbose”或“ pod update --verbose”输出的“ Send stats”部分中显示的警告,例如“ yourApp [Debug]”目标会覆盖“ HEADER_SEARCH_PATHS” “在...中定义的构建设置”或“ ...目标将覆盖`OTHER_LDFLAGS`构建设置...”。
jk7

更改“ 按配置构建产品路径”中的“ 预览”配置,然后执行pod install,pod不会将我的价值保存在pod项目中,有帮助吗?
liu冥王星

啊! 在为扩展创建新配置后,立即发生此问题。前3个步骤可帮助我了解问题。谢谢!
iHarshil


53

没有一种解决方案对我有用,这真的让人难以忍受,有一个文件libpods.a(红色)我删除了,一切正常!为我加油;)


6
也发生在我身上。我已经重命名了目标,它创建了这个有问题的工件.a文件。
seenickcode

如果执行此操作,则不会将使用Cocoapods添加的库添加到项目中。
弗朗西斯科·科拉莱斯·莫拉莱斯2015年

1
你做了我的一天:D,有2个目标,我删除了一个目标,但它的豆荚仍然存在并且无法建立,通过删除该目标的豆荚的引用来解决
Mohammad alabid

我也一样 这是一个我多年未接触的老项目,但仍然具有Podfile等旧格式。
Departamento B,

46

我已将广告连播列表划分Podfile为不同的目标,例如:

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

然后跑了 pod install

这创建了一个新的库libPods-ABC.a,我的二进制文件必须链接到该库。但是错误是它没有删除以前的库,即libPods.a

解决方案:删除该库libPods.aBuild PhasesLink Binary With Libraries



2
解决方案是不同的。这使用这个确切的解决方案为我解决了。
cynistersix 2015年

删除库libPods.a,然后通过pod install为我解决此问题。
bisma '16

1
错误导出为IPHONEOS_DEPLOYMENT_TARGET = 9.0时已解决,它带有“ ld:找不到-lPods的库”
jacksonfdam16年

重命名目标后,对我有效。
alsantos123

46

我指定了旧的libPod.a文件(可能是由于我更改了目标引起的)。

项目设置 -> 构建阶段 -> 与库链接二进制文件

通常,cocoapods仅包含一个库,例如libPods-target.alibPods.a。我通过删除重复项解决了它。


5
这对我有用。我正在添加对测试目标的Pod支持(* Tests和* UITests),并且基本配置从更改Pods.debugPods-MyApp.debug,所以现在我只需要libPods-MyApp.a(旧有“褪色”图标即可libPods.a
Nicolas Miari

没有适合我的褪色图标,但这是唯一有效的解决方案。
Yogesh Maheshwari

同样在这里。谢谢
rmvz3

我更改了项目名称,然后发生错误。上述解决方案为我工作。
guness

44

如果您在cocoapods v25 / Xcode 5上遇到此问题

Pods Xcode项目现在在Debug配置中将ONLY_ACTIVE_ARCH构建设置设置为YES。您将必须在项目/目标上设置相同的设置,否则构建将失败。

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

更新确保您拥有最新的宝石/可可足类

  • 宝石更新系统
  • 宝石更新可可

您将要使用Pod Install重建项目来重建项目。


在将CP添加到一个非常老的项目后,对我来说就是这样。
Josh Hudnall 2014年

对我来说也一样-将CP添加到一个非常老的项目中,可以在模拟器上构建,但是一旦我切换到设备构建,构建就会失败。这个答案很有帮助!
弗洛里安2014年

40

如果Xcode在链接时抱怨(例如-lPods找不到库),则它不会检测到隐式依赖项。

转到“产品”>“编辑方案”,单击“构建”,然后单击“添加Pods”静态库,并确保它位于列表的顶部。清理并再次构建。从github拉。通过在/ Pods /中进行查找。如果为空(不应为空),请验证〜/ .cocoapods / master //。podspec中是否包含正确的git hub URL。如果仍然无法使用,请检查您的XCode构建位置设置。转到首选项->位置->派生数据->高级,然后将构建位置设置为“相对于工作区”。

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


3
第一部分解决了我的问题(产品>编辑方案,将Pod添加到Build作为第一项)。谢谢
William Power

我在带有cocoapods 0.36.0的xCode 6.3中遇到了这个问题,这就是修复它的原因。谢谢!
ProgrammierTier

与xcode 6.3 cocoapods 0.37一样->谢谢!目标设置让我变得疯狂,而问题是计划。只需添加Pods。
altagir

36

当我编辑Podfile时添加一个我以前没有目标的目标时,我遇到了同样的问题。

播客文件

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

在想了一下之后,我发现在目标属性>>常规选项卡>>链接的框架和库部分下,有一个新的libPods-xxxx.a和一个旧的libPods.a

我只是删除了libPods.a,一切正常。


这也是我的问题。我认为问题的根源在于在开发过程中我已经升级了CocoaPods和Podfile的格式。
gklka 2015年

2
在pod上添加目标后,我有完全相同的场景。+1的准确性
Adriano Spadoni 2015年

27

GitHub上 CocoaPods Wiki 在其FAQ中具有正确的答案

  • Product > Edit Scheme
  • 点击 Build
  • 添加Pods静态库,并确保它在列表顶部
  • 清理并重新构建
  • 如果这不起作用,请验证您要包含的规范的源是否已从github提取。通过查看来执行此操作<Project Dir>/Pods/<Name of spec you are trying to include>。如果为空(不应为空),请验证中是否~/.cocoapods/master/<spec>/<spec>.podspec具有正确的github url。
  • 如果仍然无法使用,请检查您的XCode构建位置设置。转到Preferences -> Locations -> Derived Data -> Advanced并将构建位置设置为“相对于工作区”。

屏幕截图


6
我也遇到过这个问题,但似乎无法执行这些步骤。我被困在“添加pods静态库并确保它在列表顶部”。单击将其添加到Build方案后,静态库不显示。任何的想法?
菲利普斯湾

@BayPhillips关闭当前项目,然后打开在项目文件夹中创建的.xcworkspace。然后显示静态库
Juneho Nam

12

我将项目从“合作伙伴”重命名为“ NBSelector”。

重命名项目后,出现“找不到libPods-Partners库”错误。Xcode试图链接到旧的Partners.a文件。重命名后,如果已安装podInstall,只需将其删除。

在此处输入图片说明


我的问题的完美解决方案:)但如果您要使用豆荚,则在卸下豆荚后需要再次添加豆荚
satheesh 2015年

11

在所有广告连播中使用ONLY_ACTIVE_ARCH = NO为我解决了这个问题。为了使其持久,我在Podfile中添加了一个post_install钩子:

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 到此为止。


8

您是否创建了“分发”或类似配置来制作Ad-Hoc和App Store存档?像许多其他人一样,我遵循了苹果的建议,并称为“发布”配置,称为“发行”,并为其设置了不同的签名规则。好吧,也许这是在他们在Organizer中引入方案和“ Distribute”选项之前的一项建议,无论如何,我只是从以前开始就有的。

然后我在Pod上遇到了同样的问题。调试时一切正常,但归档失败并出现链接错误。在尝试了这一点之后,我将原始项目的“存档”配置从“分发”更改为“发布”,链接错误消失了。

尽管我可以在文件系统中找到该档案,但该档案未在Organizer中显示,但其大小为0。

解决所有这些问题的最后一步是将“发布”配置的“跳过安装”设置更改为“否”。注意,您只需要对主项目执行此操作,而不必对Pods项目执行此操作。最好保持Pods项目不变,因为它是在每次运行“ pod install”时生成的。

更新 刚刚从CocoaPods开发人员那里得到了答案 ,因为我已经正确设置了Pods配置,所以它似乎对我不起作用。但这可以帮助其他人。


8

在我的情况下,问题是Xcode的“派生数据”位置设置为“旧版”选项。CocoaPods目标(libPods.a)的构建正确,但是Xcode的位置不正确。

将其切换为“唯一”(默认)即可解决此问题。您可以通过以下方法执行此操作:转到“偏好设置”>“位置”,然后单击“高级...”按钮。


但是我处在一种情况下,我必须使用“旧版”,继续寻找另一种解决方案...
CocoaBob 2015年



4

我发现选择“查找隐式依赖项”(在产品/编辑方案下)将解决此问题,而不必将吊舱添加为目标。


按照以下步骤操作后,再次运行pod install也可以提供帮助。
2014年

3

我仔细阅读了这里的所有答案,但是对我而言,这简直太简单了……转到“目标”->“构建阶段”,然后删除libPods-YourProject.a,然后使用“ +”再次添加。不用担心库是红色的,这很好。


3

更新cocoapods之后,我使用了旧的cocoapod版本,由于长时间更新,我建议我更新已安装的pod,这是因为进行了重大更新。我对其进行了更新,并且新版本的Pod已更新为正常。但是之后我得到了类似的错误library not found for -lPods-xxxprojectName-xxxxxpodName

在尝试了很多解决方案作为答案之后,这些都不对我有用。然后我去了我的项目设置,发现豆荚路径正在改变Other Linker Flag

检查您Manage Schemes的广告连播名称是否正确,并在中进行比较Other Linker Flag,如果不相似,请进行更改

旧的吊舱路径原为 -l"lPods-xxxprojectName-xxxxxpodName"

但是只有新豆荚,xxxxxpodName所以我用Other Linker Flag下面的新豆荚代替了

更改为吊舱路径,-l"xxxxxpodName"并且可以使用。

我不知道这背后的完美原因,但可能会对某人有所帮助。


3

我确实打开了工作区,但是遇到了同样的错误。

Build Active Architecture仅 设置为YES

解决我的问题。


有帮助。谢谢。不知何故,只有在其余配置将其设置为“否”时才将其设置为“调试”,并且我已经看到除调试以外的所有内部版本的错误。
帕维尔·亚基缅科,

这只帮助了我。这样的回答“以.workspace打开”太无聊了。我觉得开发商应该首先检查安装指南文档不够彻底..
KoreanXcodeWorker

2

请按照以下步骤解决:

  • 更新您的cocoapods安装。($ [sudo] gem install cocoapods)
  • 在项目下重新安装您的依赖项。(pod安装)
  • 清理并重新构建/存档。

这实际上效果很好。我已经更新了项目中的其中一个Pod,但结果中断了。我遵循了这些步骤,并且成功了。这是一个快速修复。谢谢
Agarcian 2013年

2

就我而言pod install,在创建分发和发布方案后解决了该问题。


1

存档提交时遇到了同样的问题。关于此问题的讨论可以在这里找到:https : //github.com/CocoaPods/CocoaPods/issues/155

总之,有两种方法对我有用:

  1. 将“首选项->位置->高级”设置为“自定义(相对于工作区)”或
  2. 将Podfile设置为 - platform :ios, :deployment_target => "5.0"

1

在iOS 7上使用Xcode 5

这是我被困一个小时后所做的事情。从构建设置>有效体系结构中删除ARM64。

添加:另外,就我而言,它不是派生数据位置。我选择了唯一的构建位置。


1

如果您使用的是iOS7和Xcode 5,请执行以下操作:

  • 选择您的Pods项目。
  • 转到目标Pod,然后在“构建设置”中,选择“体系结构”->“标准体系结构(armv7,armv7s)”。
  • 对Pods项目的每个目标执行相同的操作。

1

我在此线程中尝试了所有答案均无济于事。最后,通过将目标项目中的“预配置构建产品路径”与Pods项目中的值进行匹配,解决了我的问题。原来,他们正在构建到两个不同的输出位置。此主题中的其他建议均与我无关。如果XCode提供有用的错误描述(例如,为什么它不能使用lib-未找到文件,未找到匹配的体系结构等),那将是很好的。


1

在此问题中,如果您已经在系统中安装并更新了Pod,则您的Xcode无法找到Pods库。要解决此问题,请检查可能发生的以下原因:

  1. 您正在使用工作区。
  2. Pods库将建立。
  3. 在项目的产品组中引用了Pods库。
  4. 您的目标在与框架构建阶段的链接中包括Pods库。

1

尝试

link_with'YouTarget1','YouTarget2'...

我的项目成功了,目标突然停止了编译。然后添加“ link_with”并恢复正常。

显然,现在它仅连接到第一个目标,即链接所示:

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


这个为我解决了...问题,第一个目标正在构建,而第二个目标失败,出现“ ld:找不到-lPods的库...”
Muxor

1

如果仍然遇到此问题,请尝试:

pod update

为我做了工作,希望对您有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.