库找不到-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是我用来pipe理XCode项目依赖关系的CocoaPods。 https://github.com/CocoaPods/CocoaPods
这是我的Podfile
platform :ios dependency 'libPusher', '1.1'
我不确定错误是什么意思?
你打开工作区(这是由CocoaPods生成)而不是xcodeproj?
我通过使用分隔应用程序和Podfile中的testing目标
target :App do … end target :AppTests do … end
这导致了两个新产品libPods-App.a和libPods-AppTests.a ,他们使以前的产品libPods.a过时。 我不得不从这两个目标的Build Phasesconfiguration中的Link Binary With Libraries部分删除该产品。
我今天碰到类似的问题。
- 我build立了一个新的项目
- 我安装了cocoa豆荚
- 我创build了一个新的configuration
Preview
以及现有的Debug
和Release
-
现在编译这个新的
Preview
configuration时,编译器将无法链接Pod并给我这个消息:ld: library not found for -lPods
解决scheme:
我所要做的就是跑步
pod install
再次,因此configuration新的Preview
configurationcocoapods。 它更新了我的项目,工作区和Pod的项目文件,问题消失了
确保您打开.xcworkspace
,而不是.xcodeproj
不是一个解决scheme为我工作,这是真的难以忍受,有一个文件libpods.a
(这是红色)我删除它,一切工作正常! 给我欢呼;)
我已经在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
这创build了一个新的库libPods-ABC.a
我的二进制文件必须链接到。 但这个错误是它并没有删除以前的库,即libPods.a
。
解决scheme:从Build Phases
Link Binary With Libraries
Build Phases
中删除库libPods.a
。
如果你在cocoapods v25 / Xcode 5上遇到这个问题
Pods Xcode项目现在将Debugconfiguration中的ONLY_ACTIVE_ARCH构build设置设置为YES。 你将不得不在你的项目/目标设置相同,否则构build将失败。
更新确保你有最新的gem/cocoa豆
- gem更新系统
- gem更新cocoapods
您将需要使用Pod Install重build项目来重build项目。
如果Xcode在链接时抱怨,比如找不到-lPods的库,它不会检测到隐式的依赖关系。
转到Product> Edit Scheme点击Build添加Pods静态库,并确保它在列表顶部清理并再次构build如果这样做不起作用,请validation您要包含的规范的源是从github拉。 通过查看/ Pods /来执行此操作。 如果它是空的(不应该是),请validation〜/ .cocoapods / master //。podspec在其中包含正确的git集线器URL。 如果仍然不起作用,请检查您的XCode构build位置设置。 转到首选项 – >位置 – >派生数据 – >高级,并将生成位置设置为“相对于工作区”。
我有一个旧的libPod.a文件指定(可能是由我改变目标造成的)。
项目设置 – > 构build阶段 – > 与库链接二进制文件
通常,cocoapods只包含一个库,比如libPods-target.a
或者libPods.a
。 我通过删除重复来解决它。
当我编辑Podfile添加我以前没有使用目标的目标时,我遇到了同样的问题。
Podfile
target 'xxxx' do pod 'xyz' pod 'abc' end
在奇怪的发现后,我发现在目标属性>>常规选项卡>>链接的框架和库部分,有新的libPods-xxxx.a和旧的libPods.a
我刚刚删除了libPods.a,一切正常。
CocoaPods在GitHub上的维基在他们的常见问题中有答案 :
- 转到
Product > Edit Scheme
- 点击
Build
- 添加Pods静态库,并确保它在列表的顶部
- 清理并重新构build
- 如果这不起作用,请确认您尝试包含的规范的源已经从github中提取。 通过查找
<Project Dir>/Pods/<Name of spec you are trying to include>
。 如果它是空的(不应该是),请validation~/.cocoapods/master/<spec>/<spec>.podspec
在其中包含正确的github url。 - 如果仍然不起作用,请检查您的XCode构build位置设置。 转到
Preferences -> Locations -> Derived Data -> Advanced
,并将生成位置设置为“相对于工作区”。
在所有的豆荚中使用ONLY_ACTIVE_ARCH = NO解决了我的问题。 为了使这个持久化,我添加了一个post_install钩子到我的Podfile:
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
,你就完成了。
我把这个项目从“合作伙伴”重命名为“NBSelector”。
重命名该项目后,出现“Library for libPods-Partners”错误。 Xcode试图链接到旧的Partners.a文件。 如果您在重命名后安装了pod,请将其删除。
您是否创build“分发”或类似configuration来制作Ad-Hoc和App Store档案? 像许多其他人一样,我遵循苹果的build议,并将其命名为“发布”configuration,称之为“发布”,并为其设置不同的签名规则。 那么,也许这是一个build议,然后他们介绍计划和组织者中的“分发”选项,无论如何,我刚才从它之前。
然后我也有与Pods相同的问题。 debugging时一切正常,但链接错误导致归档失败。 试过这个后,我把原来的项目的存档configuration从'Distribution'改为'Release',连接错误消失了。
然而,档案没有出现在组织者,虽然我可以find它在文件系统,但它有0大小。
解决所有这些问题的最后一步是将“释放”configuration的“跳过安装”设置更改为“否”。 请注意,您必须仅为您的主项目执行此操作,而不是为Pods项目执行此操作。 因为每次运行“pod安装”时都会生成,所以最好不要使用Pods项目。
更新刚刚从CocoaPods开发人员得到的答案它似乎并没有为我工作,因为我有Podsconfiguration正确设置。 但它可以帮助别人。
在我的情况下,问题是Xcode的派生数据位置设置为“传统”选项。 CocoaPods目标(libPods.a)正在被正确地构build,但Xcode正在寻找错误的地方。
切换到“唯一”(默认)解决了这个问题。 您可以通过转到“首选项”>“位置”并单击“高级…”button来完成此操作。
只有在“Pods / build / Debug-iphonesimulator”中添加“库searchpath”(在“MyProject”的生成设置中)才能工作(使用模拟器时)。
从这里得到它: https : //github.com/CocoaPods/CocoaPods/issues/121#issuecomment-5452473
如果您正在为iOS7和Xcode5存档,并且遇到这些错误,请参阅此链接。 看起来苹果正在放弃cocoa豆荚需要的架构https://github.com/CocoaPods/CocoaPods/pull/1352
我发现select“查找隐式依赖关系”(产品/编辑scheme下)将解决这个问题,而不是必须添加豆荚作为目标。
我经历了这里的每一个答案,但对我来说这是非常简单的…转到目标 – >构build阶段,然后删除libPods-YourProject.a,然后再次使用“+”添加它。 不要担心图书馆是红色的,没关系。
通过以下步骤解决:
- 更新你的cocoapods安装。 ($ [sudo] gem install cocoapods)
- 在您的项目下重新安装依赖项。 (荚安装)
- 清理并重build/归档。
在我的情况下, pod install
在创build分发和发布scheme后解决了这个问题。
我更新cocoapods后,使用旧的cocoapod版本,它build议我更新我安装的pod,因为重大更新,因为我更新很久以后。 我更新它,新版本豆荚更新正常。 但之后,我得到了类似library not found for -lPods-xxxprojectName-xxxxxpodName
的错误library not found for -lPods-xxxprojectName-xxxxxpodName
在尝试了很多这样的答案之后,非我的工作。 然后我去了我的项目设置,发现豆荚path是在Other Linker Flag
检查您的Manage Schemes
是否有正确的pod名称,并在“ Other Linker Flag
进行比较,如果不相似,则更改它
旧的podpath是-l"lPods-xxxprojectName-xxxxxpodName"
但新的豆荚只是xxxxxpodName
所以我用下面的新的replaceOther Linker Flag
更改为podpath-l"xxxxxpodName"
,它的工作。
我不知道这背后的完美原因,但可能是这个帮助一些。
归档提交时,我遇到了同样的问题。 关于这个问题的讨论可以在这里find: https : //github.com/CocoaPods/CocoaPods/issues/155
总之,有两种方法适用于我:
- 将“首选项 – >位置 – >高级”设置为“自定义(相对于工作区)”
- 将Podfile设置为
- platform :ios, :deployment_target => "5.0"
在iOS 7中使用Xcode 5
这是我坚持了一个小时后所做的。 从“生成设置”>“有效体系结构”中删除ARM64。
ADDED:另外,对于我的情况,这不是派生数据的位置。 我select了独特的build立位置。
如果您使用的是iOS7和Xcode 5,请执行以下操作:
- select您的豆荚项目。
- 转到“目标舱”并在“生成设置”中select“体系结构” – >“标准体系结构”(armv7,armv7s)。
- 为您的Pods项目的每个Target执行相同操作。
我在这个线程中尝试了每个答案都无济于事。 最后通过将我的目标项目中的“Pre-Configuration构build产品path”与Pods项目中的值进行匹配来解决我的问题。 原来,他们正在build设两个不同的输出地点。 这个线程中没有其他的build议与我有关。 如果XCode提供了一个有用的错误描述(比如为什么它不能使用这个lib – 找不到文件,找不到匹配的体系结构等等),那将会很棒。
在这个问题中,如果您已经在系统中安装并更新了pod,那么您的Xcode无法findPods库。要解决此问题,请检查可能发生的以下原因:
- 您正在使用工作区。
- Pods库build立。
- Pods库在您的项目的产品组中被引用。
- 您的目标包括与框架构build阶段链接的Pods库。
尝试
link_with'YouTarget1','YouTarget2'…
我的项目工作,目标突然停止编译。 然后添加“link_with”并恢复正常。
显然,现在它只是连接到第一个目标,是什么链接说:
尝试打开xcworkspace文件而不是xcodeproj文件
在我的情况下,在这个链接的常见问题解答的第四个帮助: https : //github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods
如果问题仍然存在,您可以尝试一些其他的东西。