找不到-lPods的库

时间:2012-03-25 20:39:04

标签: iphone objective-c ios xcode4.3 cocoapods

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

  • 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'

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

42 个答案:

答案 0 :(得分:592)

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

答案 1 :(得分:171)

我使用

将应用程序和Podfile中的测试目标分开
target :App do
    …
end

target :AppTests do
    …
end

分别产生了两个新产品 libPods-App.a libPods-AppTests.a ,他们制作了上一个产品 libPods.a 已过时。我不得不从两个目标的构建阶段配置的 Link Binary With Libraries Section 中删除此产品。

答案 2 :(得分:116)

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

  1. 我设置了一个新项目
  2. 我安装了可可豆荚
  3. 我创建了新配置Preview以及现有DebugRelease
  4. 现在编译这个新的Preview配置时,编译器将无法与Pod链接并向我发送此消息:

    ld: library not found for -lPods
    
  5. 解决方案:

    我必须做的是运行

     pod install
    
    再次

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

答案 3 :(得分:64)

请务必打开.xcworkspace,而不是.xcodeproj

答案 4 :(得分:53)

不是解决方案对我有用,这真是难以忍受,有一个文件libpods.a(红色)我删除了它,一切正常!为我干杯;)

答案 5 :(得分: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.a的{​​{1}}移除库Build Phases

答案 6 :(得分:45)

我指定了一个旧的libPod.a文件(可能是由于我改变目标造成的)。

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

通常,cocoapods只会包含一个库,例如libPods-target.alibPods.a。我通过删除副本来解决它。

答案 7 :(得分: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

UPDATE 确保你有最新的宝石/ cocoapods

  • gem update system
  • gem update cocoapods

您将需要使用重建项目 Pod安装以重建项目。

答案 8 :(得分:37)

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

转到产品>编辑方案 单击Build 添加Pods静态库,并确保它位于列表的顶部 清洁并再次建造 如果这不起作用,请验证您尝试包含的规范的源是否已从github中提取。通过查看/ Pods /来做到这一点。如果它是空的(它不应该是),请验证〜/ .cocoapods / master // .podspec中是否包含正确的git hub url。 如果仍然无效,请检查您的XCode构建位置设置。转到首选项 - >地点 - >派生数据 - >高级并将构建位置设置为“相对于工作区”。

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

答案 9 :(得分:36)

当我编辑Podfile时添加了我之前没有使用目标的目标时,我遇到了同样的问题。

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end

在想知道我发现目标属性>>常规标签>>链接的框架和库部分,有新的libPods-xxxx.a和旧的libPods.a

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

答案 10 :(得分:27)

GitHub上的CocoaPods维基有the answer right in their 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并将构建位置设置为“相对于工作区”。

Screen shot

答案 11 :(得分:12)

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

重命名项目后,我找不到“libPods-Partners找不到库”错误。 Xcode试图链接到旧的Partners.a文件。如果在重命名后有podInstalled,请将其删除。

enter image description here

答案 12 :(得分:11)

在所有pod中使用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你已经完成了。

答案 13 :(得分:8)

您是否创建了“分发”或类似配置来制作Ad-Hoc和App Store档案? 像许多其他人一样,我遵循Apple的建议并称之为“发布”配置,称为“发布”并为其设置不同的签名规则。好吧,也许这是他们在组织者中引入方案和“分发”选项之前的推荐,无论如何,我刚从以前那里得到它。

然后我和Pods有同样的问题。调试时一切运行良好,但归档失败,链接错误。尝试此操作后,我将原始项目的存档配置从“分发”更改为“发布”,链接错误消失了。

然而,归档文件没有出现在Organizer中,虽然我可以在文件系统中找到它,但它的大小为0。

修复所有这一切的最后一步是将“发布”配置的“跳过安装”设置更改为“否”。请注意,您必须仅为主项目执行此操作,而不是为Pods项目执行此操作。最好保留Pods项目,因为每次运行“pod install”时都会生成它。

<强>更新 得到一个answer from CocoaPods devs 它似乎对我不起作用,因为我正确设置了Pods配置。 但它可以帮助别人。

答案 14 :(得分:8)

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

将其切换为“Unique”(默认值)解决了这个问题。你可以转到首选项&gt;来做到这一点。单击位置并单击“高级...”按钮。

答案 15 :(得分:5)

只有将“库搜索路径”(在“MyProject”的构建设置中)添加到“Pods / build / Debug-iphonesimulator”才能为我工作(使用模拟器时)。

从这里得到它: https://github.com/CocoaPods/CocoaPods/issues/121#issuecomment-5452473

答案 16 :(得分:4)

如果您正在为iOS7和Xcode5存档并遇到这些错误,请参阅此链接。苹果似乎正在放弃可可豆荚所需的架构 https://github.com/CocoaPods/CocoaPods/pull/1352

答案 17 :(得分:4)

我发现选择“Find implicit Dependencies”(在产品/编辑方案下)将解决此问题,而不必将pod添加为目标。

答案 18 :(得分:3)

我在更新cocoapods之后使用了旧的cocoapod版本,它建议我更新我安装的pod,因为我在很长一段时间后更新了重大更新。我更新它,新版本pod已更新。但在那之后我得到了像library not found for -lPods-xxxprojectName-xxxxxpodName

这样的错误

在尝试了如此多的解决方案作为这个问题的答案之后,非这个对我有用。然后我进入我的项目设置,发现pods路径是Other Linker Flag

上的变化

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

旧的pod路径为-l"lPods-xxxprojectName-xxxxxpodName"

但是新的广告连播只有xxxxxpodName所以我用{1}}替换了Other Linker Flag

已更改为广告连接路径-l"xxxxxpodName",并且已有效。

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

答案 19 :(得分:3)

我在这里经历了每一个答案,但对我来说这简直太简单了......转到目标 - &gt;构建阶段,然后删除libPods-YourProject.a,然后使用“+”再次添加它。不要担心库是红色的,没关系。

答案 20 :(得分:2)

在我的情况下pod install在创建分发和发布方案后修复了问题。

答案 21 :(得分:2)

采取以下步骤解决问题:

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

答案 22 :(得分:1)

归档提交时遇到了同样的问题。 有关此问题的讨论,请访问:https://github.com/CocoaPods/CocoaPods/issues/155

总之,有两种方法适合我:

  1. 将“偏好设置 - &gt;地理位置 - &gt;高级”设置为“自定义(相对于工作区)”或
  2. 将Podfile设置为- platform :ios, :deployment_target => "5.0"

答案 23 :(得分:1)

我在这个帖子中尝试了每一个答案都无济于事。最后通过将目标项目中的“预配置构建产品路径”与Pods项目中的值相匹配来解决我的问题。原来他们正在建设两个不同的输出位置。此主题中的其他任何建议都与我无关。如果XCode提供了有用的错误描述(例如为什么它不能使用lib - 找不到文件,找不到匹配的架构等),那就太棒了。

答案 24 :(得分:1)

在本期中,如果您已经安装了&amp;更新您系统中的pod,然后您的Xcode无法找到Pods库。要解决此问题,请检查可能发生的以下原因:

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

答案 25 :(得分:1)

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

  • 选择您的Pods项目。
  • 转到Target Pods并在Build Settings中,选择Architectures-&gt;标准架构(armv7,armv7s)。
  • 对您的Pods项目的每个目标执行相同的操作。

答案 26 :(得分:1)

尝试

link_with&#39; YouTarget1&#39;,&#39; YouTarget2&#39; ...

我的项目有效,目标突然停止编译。然后添加&#34; link_with&#34;并恢复正常。

显然,现在它只是连接到第一个目标,链接是这样的:

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

答案 27 :(得分:1)

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

pod update

我的工作是否有用,希望这能帮到你。

答案 28 :(得分:1)

在iOS 7中使用Xcode 5

这是我被困一小时后所做的。从构建设置中删除ARM64&gt;有效架构。

ADDED:另外,对于我的情况,它不是派生数据位置。我选择了独特的构建位置。

答案 29 :(得分:0)

尝试打开xcworkspace文件而不是xcodeproj文件

答案 30 :(得分:0)

这里写的东西都没有帮助我-但这确实使我走上了正确的道路。我最终要做的是以下事情:

  1. 分析错误消息。

    上面写着Library not found: -lPods-..。因此,它找不到该特定的库。怎么解决呢?好吧,请确保该库位于搜索路径中。那么这个图书馆在哪里?

  2. 搜索库的位置。

    我在find . | grep -e 'Pods-.*\.a'文件夹的终端中输入了~/Library/Developer/Xcode/DerivedData。我发现我的libPods-...库位于很多地方,例如~/Library/Developer/Xcode/DerivedData/[generated-name]/Build/Products/Release-iphonesimulator/libPods-[name].a

  3. 将这些文件夹之一添加到库搜索路径

    如果我们将这些文件夹之一添加到库搜索路径,则问题将消失。但是,所有路径在某个位置都有一个[generated-name]文件夹,在我的情况下为[Project]-guyraaahpczkqmhghlwgsdsqyxxs

    那么我们如何负责任地将该文件夹添加到搜索路径?通过使用构建时间变量!通过查看this answer,我们可以获得存在哪些变量的列表。事实证明,已定义的变量之一称为${PODS_CONFIGURATION_BUILD_DIR},而我的libPods-[Product].a正是位于该文件夹中!

  4. 现在将该文件夹添加到库搜索路径。

    这是简单的部分,也是我对这个问题的实际答案。转到构建设置-> 搜索路径-> 库搜索,确保其已折叠,然后双击

    在弹出的对话框中,单击左下方的小“ +”号。现在键入"${PODS_CONFIGURATION_BUILD_DIR}",并将下拉选项保留为“ non-recursive”。输入。现在,将该条目一直拖动到最底端,使其直接位于$(inherited)下。

  5. 您完成了。重建您的产品!

    我的错误现在消失了。赞成这个答案,关闭选项卡,然后忘记曾经存在的问题?

答案 31 :(得分:0)

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

仅构建活动架构设置为

解决我的问题。

答案 32 :(得分:0)

删除CocoaPods缓存文件夹〜/ Library / Caches / CocoaPods和安装窗格适用于我。

答案 33 :(得分:0)

我遇到了一个问题,我创建了自己的.xcworkspace,这使得pods可以创建自己的(它在哪里附加它的库)。

溶液

我移动了我创建的.xcworkspace,再次运行pod install,然后手动合并我的.xcworkspace与通过打开工作区和拖动创建的 pod 文件从一个工作区到另一个工作区。

答案 34 :(得分:0)

我也有,Cocoapods版本0.28.0

这里很容易解决,没有冗长的阅读: - 卸载Cocoapods(命令行或AppCode) - 擦除Podfile,Podfile.lock,Pods文件夹

  • 重新安装Cocoapods
  • 启动新创建的工作区。

答案 35 :(得分:0)

我在libPods.a中遗漏了target,因此首先要做的是将其添加到链接的框架和库

接下来,产品 - &gt;构建 - &gt;分析 (或者在添加libPods.a之前,如果你完全错过了它)

最后检查构建阶段 中的 Copy Pods资源脚本(如果它与您的第二个目标相同 - 有时取决于Podfile及其目标) 。然后你应该成功建立。

答案 36 :(得分:0)

简化@ i4niac的回答:

另一个常见原因是Scheme的Build Configuration不匹配。 在我们的例子中,我们的'AppName-AppStore'方案将“Release”作为归档构建配置而不是“AppStore”(对于其他人来说可能是另一种方式)。

答案 37 :(得分:0)

将some_project.workspace文件重命名为some_project.workspace.backup并运行$ pod install。它创建了一个新的工作区文件,错误就消失了。

答案 38 :(得分:0)

我有同样的问题。在我的案例中,它原来是一个xCode错误。我所要做的就是删除“有效拱门”,做一个干净的,重新添加它们,我很高兴去。另外,请尝试更新cocoapods。

答案 39 :(得分:0)

在我的案例中,此链接中的常见问题解答4中有助于: https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods

如果问题仍然存在,还可以尝试一些其他的事情。

答案 40 :(得分:0)

我通过为所有pod设置与我的项目相同的架构和有效架构来解决这个问题。所以我案例中的漏洞解决方案是:

  • 更新可可豆荚:sudo gem update cocoa pods
  • 更新pod:pod update
  • 在你的Pod中转到你的Build设置&gt;体系结构并在此处设置体系结构和有效体系结构,使其与主项目中的值完全相同。

答案 41 :(得分:-1)

我厌倦了所有的答案,最后我能够通过在Xcode Build方案中添加pod库来修复它,在我能够运行它之后,试图从构建方案中删除它并且仍然可以正常工作我。无法找出确切的原因。