找不到-lPods的库

ang*_*okh 327 iphone objective-c ios xcode4.3 cocoapods

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

  • Mac OS Lion
  • Xcode 4.3.1
  • iOS SDK 5.1

项目部署目标是:

IPHONEOS_DEPLOYMENT_TARGET 3.2
Run Code Online (Sandbox Code Playgroud)

错误显示:

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

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

这是我的Podfile

platform :ios  
dependency 'libPusher', '1.1'
Run Code Online (Sandbox Code Playgroud)

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

all*_*loy 606

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

  • 为了清楚新手,你应该打开`.xcworkspace`文件,而不是`.xcodeproj`.这样,除了你的项目,Xcode知道`Pods /`目录中的项目以及如何构建`libPods.a`. (244认同)
  • 我做到了.将Pods项目的发布架构更改为'armv6 armv7'后问题得以解决. (26认同)
  • 接下来来自@ JonathanTran的评论...如果您打开`.xcodeproj`,则需要在打开`.xcworkspace`文件之前将其关闭. (13认同)
  • Aha,在你的`Podfile`中,像这样指定平台:`platform:ios,:deployment_target =>"3.2"`.那应该在下次运行`pod install`时正确配置它. (10认同)
  • 请注意,您正在使用pod的项目也应将其架构设置为armv6 armv7(如果这是您在pods项目架构上使用的选项).如果你不这样做,你会得到同样的错误. (4认同)

And*_*ani 173

我使用了将应用程序和Podfile中的测试目标分开

target :App do
    …
end

target :AppTests do
    …
end
Run Code Online (Sandbox Code Playgroud)

这导致了两个新产品libPods-App.alibPods-AppTests.a,它们分别使之前的产品libPods.a过时了.我不得不从两个目标的Build Phases配置的Link Binary With Libraries部分中删除此产品.

  • 是的,在这个帖子中早些时候尝试了十几个其他的东西后,这对我来说就是这样.我的podfile有两个目标,因此没有构建libPods.a.从Link Binary With Libraries部分删除libPods.a部分"修复"它(当然我现在有32个"未定义符号"消息要排序,因为缺少SQLite lib等. (3认同)

Bes*_*esi 119

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

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

    ld: library not found for -lPods
    
    Run Code Online (Sandbox Code Playgroud)

解决方案:

我要做的就是奔跑

 pod install
Run Code Online (Sandbox Code Playgroud)

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


Mic*_*mny 69

确保你打开.xcworkspace,而不是.xcodeproj


Hem*_*ang 53

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

  • 也发生在我身上.我重命名了我的目标,它创建了这个有问题的工件.a文件. (6认同)

Ayu*_*oel 46

我已经将我的pod列表划分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
Run Code Online (Sandbox Code Playgroud)

跑了一个 pod install

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

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

  • 解决方案是不同的.这使用这个确切的解决方案为我修复了它. (2认同)

Seb*_*jas 46

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

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

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

  • 这对我有用.我正在为测试目标添加pod支持(*Tests和*UITests),基本配置从`Pods.debug`更改为`Pods-MyApp.debug`,所以现在我只需要`libPods-MyApp.a`(那里旧的`libPods.a`是一个"褪色"的图标, (5认同)

joh*_*ope 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

更新确保您有最新的宝石/ cocoapods

  • 宝石更新系统
  • 宝石更新cocoapods

您将需要使用Pod Install重建项目以重建项目.


Hor*_*ain 39

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

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

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

  • 第一部分解决了我的问题(产品>编辑方案,将Pods添加到Build作为第一项).谢谢 (3认同)

Kha*_*jar 36

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

Podfile

target 'xxxx' do

pod 'xyz'
pod 'abc'    

end
Run Code Online (Sandbox Code Playgroud)

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

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

  • 在pod上添加目标后,我有完全相同的情况.+1准确度 (2认同)

Chr*_*uer 27

GuitHub上的CocoaPods维基在他们的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并将构建位置设置为"Relative to Workspace".

屏幕截图

  • 我也遇到过这个问题,但我似乎无法做这些步骤.我被困在"添加pods静态库并确保它位于列表顶部".单击以将其添加到Build方案时,静态库不显示.任何的想法? (6认同)

Nal*_*ene 12

我将项目重命名为"合作伙伴"中的"NBSelector".

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

在此输入图像描述


小智 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
Run Code Online (Sandbox Code Playgroud)

pod install 你完成了


i4n*_*iac 8

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

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

然而,存档没有显示在Organizer中,虽然我可以在文件系统中找到它,但它有0大小.

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

更新 刚从CocoaPods devs得到答案 它似乎对我不起作用,因为我正确设置了Pods配置.但它可以帮助别人.


Ada*_*arp 8

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

将其切换为"唯一"(默认)解决了这个问题.您可以通过转到"首选项">"位置"并单击"高级..."按钮来执行此操作.


小智 5

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

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


Joe*_*ul6 5

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

仅构建活动架构 设置为YES

解决我的问题。