没有为-lPods找到库

我存档一个项目时出错了。这就是我的环境。

  • 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是CocoaPods,我用来管理XCode项目依赖。 https://github.com/CocoaPods/CocoaPods < / p >

这是我的Podfile

platform :ios
dependency 'libPusher', '1.1'

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

177887 次浏览

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

你是否创建了“Distribution”或类似的配置来制作Ad-Hoc和App Store档案? 像许多其他人一样,我遵循了苹果的建议,将其命名为“发布”配置,并将其称为“分发”,并为其设置了不同的签名规则。好吧,也许这是他们在组织者中引入方案和“分发”选项之前的一个建议,不管怎样,我只是从以前就有了

然后我对豆荚也有同样的问题。调试时一切正常,但存档失败,链接错误。在尝试了这个和那个之后,我把我原始项目的存档配置从“分发”改为“发布”,链接错误消失了。

然而,归档没有显示在组织者,虽然我可以在文件系统中找到它,但它的大小为0。

解决这一切的最后一步是改变“跳过安装”设置为“发布”配置为“NO”。注意,你只需要在你的主项目中这样做,而不是在Pods项目中。最好让pod项目保持原样,因为它是在每次运行“pod install”时生成的。

<强>更新 刚刚得到一个答案来自CocoaPods devs 它似乎对我不起作用,因为我已经正确设置了Pods配置。 但它可以帮助其他人。

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

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

    ld: library not found for -lPods
    

The solution:

What I had to do was to run

 pod install

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

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

只有将“库搜索路径”(在“MyProject”的构建设置中)添加到“Pods/ Build / debug - iphonessimulator”中才对我有效(当使用模拟器时)。

从这里开始: https://github.com/CocoaPods/CocoaPods/issues/121#issuecomment-5452473 < / p >

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

在我的例子中,问题是Xcode的派生数据位置被设置为“Legacy”选项。CocoaPods目标(libpodds .a)正在正确地构建,但Xcode在错误的地方寻找它。

将其切换为“Unique”(默认值)解决了这个问题。你可以通过去首选项>位置,然后点击高级…按钮。

在我的情况下,这个链接中的FAQ nr 4帮助了我: https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods < / p >

如果问题仍然存在,您可以尝试其他一些方法。

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

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

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

重命名some_project。工作空间文件到some_project.workspace。备份并运行$pod install。它创建了一个新的工作空间文件,错误就消失了。

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

如果Xcode在链接时报错,例如Library not found for -lPods,它不会检测到隐式依赖。

进入产品>编辑方案 点击构建 添加Pods静态库,并确保它位于列表的顶部 清理并重新建造 如果这不起作用,请验证您试图包含的规范的源代码是否已经从github中取出。通过查看/Pods/来完成此操作。如果它是空的(它不应该是空的),验证~/.cocoapods/master//。Podspec中有正确的git hub url。 如果仍然不工作,检查你的XCode构建位置设置。点击Preferences -> Locations -> Derived Data -> Advanced,将构建位置设置为“相对于工作区”

http://docs.cocoapods.org/guides/getting_started.html < a href = " http://docs.cocoapods.org/guides/getting_started.html " > < / >

通过以下步骤解决这个问题:

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

使用Xcode 5和iOS 7

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

补充:此外,对于我的情况,它不是派生的数据位置。我选择了唯一的构建位置。

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

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

< a href = " https://github.com/CocoaPods/CocoaPods/wiki/FAQ运行-到-构建-失败-后-迁移- - xcode 5 -和- cocoapods - 0250 " > https://github.com/CocoaPods/CocoaPods/wiki/FAQ运行-到-构建-失败-后-迁移- - xcode 5 -和- cocoapods - 0250 < / >

< p >更新 确保你有最新的gems / cocoapods

  • Gem更新系统
  • Gem更新cocoapods

你将想要重建项目使用 Pod安装重建项目

在我的案例中,pod install在创建分发和发布方案后解决了这个问题。

我也有,Cocoapods版本0.28.0

这里很简单,不需要冗长的阅读: -卸载Cocoapods(命令行或AppCode) -删除Podfile, Podfile。锁,Pods文件夹

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

CocoaPods在GitHub上的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并将构建位置设置为“相对于工作区”。

截图

我也有同样的问题。在我的案例中,这是一个xCode错误。我所要做的就是删除“有效的拱门”,做一个清洁,重新添加他们,我就好了。一般来说,也可以尝试更新的cocoapods。

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

如果你使用的是iOS7和Xcode 5,请:

  • 选择你的Pods项目。
  • 转到目标Pods,在构建设置中,选择架构->标准架构(armv7, armv7s)。
  • 对Pods项目的每个Target执行同样的操作。

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

在重命名项目后,我有“libPods-Partners未找到库”错误。Xcode试图链接到旧的合作伙伴。一个文件。只要删除它,如果你有podInstalled重命名后。

enter image description here

我解决了这个问题,为我的项目设置架构和有效架构相同的所有pod。所以在我的案例中,洞的解决方案是:

  • 更新可可荚:sudo宝石更新可可荚
  • 更新pod:更新pod
  • 在你的pod中,转到你的构建设置>架构,并将这里的架构和有效架构设置为与主项目相同的值。

我在Podfile中通过使用将app和测试目标分开

target :App do
…
end


target :AppTests do
…
end

这导致了两个新产品libPods-App.alibPods-AppTests.a,他们分别淘汰了之前的产品libPods.a。我必须从两个目标的构建阶段配置的用库节链接二进制文件中删除这个乘积。

我尝试了这篇文章中的每一个答案,但都无济于事。最终通过匹配我的目标项目中的“Pre-Configuration Build Products Path”与Pods项目中的值来解决我的问题。原来他们在建造两个不同的输出位置。这篇文章中的其他建议都与我无关。如果XCode给出一个有用的错误描述(比如为什么它不能使用lib - File Not Found, No matching architecture Found等等),那就太好了。

在这个问题中,如果您已经安装了&在你的系统中更新pod,那么你的Xcode就找不到Pods库了。要解决此问题,请检查以下可能发生的原因:

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

我已经在Podfile中为不同的目标划分了pod列表,例如:

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

解决方案:从Link Binary With LibrariesBuild Phases中删除库libPods.a

我发现选择“查找隐式依赖项”(在product / edit scheme下)将解决这个问题,而不必将pod添加为目标。

我把这里的每个答案都看了一遍,但对我来说太简单了……转到Target -> Build Phases,然后删除libPods-YourProject。A,然后用“+”再加一次。别担心图书馆是红色的,没事的。

试一试

link_with 'YouTarget1', 'YouTarget2'…

我的项目成功了,目标突然停止编译。然后添加“link_with”并返回normal。

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

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

不是一个解决方案为我工作,这真的是无法忍受的,有一个文件libpods.a(这是红色的),我删除了它,一切工作正常!为我干杯!

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

Podfile

target 'xxxx' do


pod 'xyz'
pod 'abc'


end

在四处闲逛之后,我发现在目标属性>>通用标签>>链接框架和库部分,有新的libPods-xxxx。a和旧的libPods.a

我只是删除了libPods。A,一切都很好。

我厌倦了所有的答案,最后我能够通过添加pod库到Xcode构建方案来修复它,在我能够运行它之后,试图从构建方案中删除这个,但它仍然为我工作良好。我想不出确切的原因。

简化一下@i4niac的回答:

另一个常见的原因是方案的生成配置不匹配。 在我们的案例中,我们的“AppName-AppStore”方案将“Release”作为存档构建配置,而不是“AppStore”(对于其他方案可能是相反的方式)

我在target中缺少libPods.a,所以要做的第一件事是将它添加到链接的框架和库中。

接下来,产品->构建->剖析 (或者在添加libPods之前。A,如果你完全错过了它)

最后在构建阶段 (如果它和你的第二个目标相同-它有时取决于Podfile和它的目标)中检查你的复制Pods资源脚本。然后您就可以成功构建了。

我有一个旧的libPod。指定的文件(可能是我更改目标造成的)。

__abc0 -> __abc1 -> __abc2

通常,cocoapods只包含一个库,如libPods-target.alibPods.a。我通过移除副本解决了这个问题。

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

在尝试了这么多的解决方案后,给出的答案在这个thrred,这不是为我工作。然后我去了我的项目设置,发现pods路径是改变的,是在Other Linker Flag

检查你的Manage Schemes正确的pod名称,并在Other Linker Flag中进行比较,如果不相似则更改它

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

但是新的pods只有xxxxxpodName,所以我用新的替换了Other Linker Flag,如下所示

改为pod路径-l"xxxxxpodName",它是有效的。

我不知道这背后的完美原因,但这可能会帮助一些人。

如果你仍然遇到这个问题,试试:

pod update

已经做完了,希望这能帮到你。

我遇到了一个问题,我创建了自己的.xcworkspace,它保持pods形式创建它自己的(在哪里它附加它的库)。

解决方案

我移动了我创建的.xcworkspace,再次运行pod install,然后手动合并我的.xcworkspace和通过打开两个工作空间并将文件从一个工作空间拖到另一个工作空间而创建的豆荚

删除CocoaPods缓存文件夹~/Library/Caches/CocoaPods和安装pod对我来说是有效的。

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

只构建活动架构设置为是的

解决我的问题。

这里写的东西对我没有任何帮助,但它确实让我走上了正确的道路。我最后做的是:

  1. 分析错误信息。

    它说Library not found: -lPods-..。所以它找不到那个特定的库。如何解决?确保这个库在搜索路径中。这个图书馆在哪里?

  2. 查找库的位置。

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

  3. 将其中一个文件夹添加到库搜索路径中

    如果我们将其中一个文件夹添加到库搜索路径中,那么问题就会消失。然而,所有路径都有一个[generated-name]文件夹,在我的例子中是[Project]-guyraaahpczkqmhghlwgsdsqyxxs

    那么,我们如何负责任地将该文件夹添加到搜索路径呢?通过使用构建时间变量!我们可以通过查看这个答案来获得存在变量的列表。结果发现,其中一个定义的变量名为${PODS_CONFIGURATION_BUILD_DIR},而我的libPods-[Product].a就位于这个文件夹中!

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

    这是简单的部分,也是我对这个问题的实际答案。转到建立设置 ->搜索路径库搜索,确保它被折叠,然后双击& lt;多个Values>

    在弹出的对话框中,点击左下角的小“+”符号。现在输入"${PODS_CONFIGURATION_BUILD_DIR}",并将下拉选项保留为“非递归”。类型& lt; Enter>。现在将这个条目全部拖回,以便它直接位于$(inherited)下面。

  5. < p >你就完成了。重新构建您的产品!

    我的错误现在消失了。为这个答案投票,关闭标签,忘记问题曾经存在👍