归档项目时出错。这是我的环境。
项目部署目标是:
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'
我不确定错误是什么意思?
答案 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)
我今天遇到了类似的问题。
Preview
以及现有Debug
和Release
现在编译这个新的Preview
配置时,编译器将无法与Pod链接并向我发送此消息:
ld: library not found for -lPods
我必须做的是运行
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.a
或libPods.a
。我通过删除副本来解决它。
答案 7 :(得分:44)
如果您在cocoapods v25 / Xcode 5上遇到此问题
Pods Xcode项目现在在Debug配置中将ONLY_ACTIVE_ARCH构建设置设置为YES。您必须在项目/目标上设置相同的内容,否则构建将失败。
UPDATE 确保你有最新的宝石/ cocoapods
您将需要使用重建项目 Pod安装以重建项目。
答案 8 :(得分:37)
如果Xcode在链接时抱怨,例如找不到-lPods的库,它不会检测隐式依赖项。
转到产品>编辑方案 单击Build 添加Pods静态库,并确保它位于列表的顶部 清洁并再次建造 如果这不起作用,请验证您尝试包含的规范的源是否已从github中提取。通过查看/ Pods /来做到这一点。如果它是空的(它不应该是),请验证〜/ .cocoapods / master // .podspec中是否包含正确的git hub url。 如果仍然无效,请检查您的XCode构建位置设置。转到首选项 - >地点 - >派生数据 - >高级并将构建位置设置为“相对于工作区”。
答案 9 :(得分:36)
当我编辑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
<Project Dir>/Pods/<Name of spec you are trying to include>
来做到这一点。如果它是空的(它不应该是),请验证~/.cocoapods/master/<spec>/<spec>.podspec
中是否包含正确的github URL。Preferences -> Locations -> Derived Data -> Advanced
并将构建位置设置为“相对于工作区”。
答案 11 :(得分:12)
我将项目重命名为“合作伙伴”中的“NBSelector”。
重命名项目后,我找不到“libPods-Partners找不到库”错误。 Xcode试图链接到旧的Partners.a文件。如果在重命名后有podInstalled,请将其删除。
答案 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)
采取以下步骤解决问题:
答案 22 :(得分:1)
归档提交时遇到了同样的问题。 有关此问题的讨论,请访问:https://github.com/CocoaPods/CocoaPods/issues/155
总之,有两种方法适合我:
- platform :ios, :deployment_target => "5.0"
答案 23 :(得分:1)
我在这个帖子中尝试了每一个答案都无济于事。最后通过将目标项目中的“预配置构建产品路径”与Pods项目中的值相匹配来解决我的问题。原来他们正在建设两个不同的输出位置。此主题中的其他任何建议都与我无关。如果XCode提供了有用的错误描述(例如为什么它不能使用lib - 找不到文件,找不到匹配的架构等),那就太棒了。
答案 24 :(得分:1)
在本期中,如果您已经安装了&amp;更新您系统中的pod,然后您的Xcode无法找到Pods库。要解决此问题,请检查可能发生的以下原因:
答案 25 :(得分:1)
如果您使用的是iOS7和Xcode 5,请执行以下操作:
答案 26 :(得分:1)
尝试
link_with&#39; YouTarget1&#39;,&#39; YouTarget2&#39; ...
我的项目有效,目标突然停止编译。然后添加&#34; link_with&#34;并恢复正常。
显然,现在它只是连接到第一个目标,链接是这样的:
答案 27 :(得分:1)
如果您仍然遇到此问题,请尝试:
pod update
我的工作是否有用,希望这能帮到你。
答案 28 :(得分:1)
在iOS 7中使用Xcode 5
这是我被困一小时后所做的。从构建设置中删除ARM64&gt;有效架构。
ADDED:另外,对于我的情况,它不是派生数据位置。我选择了独特的构建位置。
答案 29 :(得分:0)
尝试打开xcworkspace文件而不是xcodeproj文件
答案 30 :(得分:0)
这里写的东西都没有帮助我-但这确实使我走上了正确的道路。我最终要做的是以下事情:
分析错误消息。
上面写着Library not found: -lPods-..
。因此,它找不到该特定的库。怎么解决呢?好吧,请确保该库位于搜索路径中。那么这个图书馆在哪里?
搜索库的位置。
我在find . | grep -e 'Pods-.*\.a'
文件夹的终端中输入了~/Library/Developer/Xcode/DerivedData
。我发现我的libPods-...
库位于很多地方,例如~/Library/Developer/Xcode/DerivedData/[generated-name]/Build/Products/Release-iphonesimulator/libPods-[name].a
将这些文件夹之一添加到库搜索路径
如果我们将这些文件夹之一添加到库搜索路径,则问题将消失。但是,所有路径在某个位置都有一个[generated-name]
文件夹,在我的情况下为[Project]-guyraaahpczkqmhghlwgsdsqyxxs
。
那么我们如何负责任地将该文件夹添加到搜索路径?通过使用构建时间变量!通过查看this answer,我们可以获得存在哪些变量的列表。事实证明,已定义的变量之一称为${PODS_CONFIGURATION_BUILD_DIR}
,而我的libPods-[Product].a
正是位于该文件夹中!
现在将该文件夹添加到库搜索路径。
这是简单的部分,也是我对这个问题的实际答案。转到构建设置-> 搜索路径-> 库搜索,确保其已折叠,然后双击
在弹出的对话框中,单击左下方的小“ +”号。现在键入"${PODS_CONFIGURATION_BUILD_DIR}"
,并将下拉选项保留为“ non-recursive”。输入$(inherited)
下。
您完成了。重建您的产品!
我的错误现在消失了。赞成这个答案,关闭选项卡,然后忘记曾经存在的问题?
答案 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文件夹
答案 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设置与我的项目相同的架构和有效架构来解决这个问题。所以我案例中的漏洞解决方案是:
答案 41 :(得分:-1)
我厌倦了所有的答案,最后我能够通过在Xcode Build方案中添加pod库来修复它,在我能够运行它之后,试图从构建方案中删除它并且仍然可以正常工作我。无法找出确切的原因。