我存档一个项目时出错了。这就是我的环境。
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'
我不确定这个错误是什么意思?
你是否创建了“分销”或类似的配置来制作Ad-Hoc和App Store存档?
像许多其他人一样,我遵循了苹果的建议,将其命名为“发布”配置,并将其称为“分发”,并为其设置了不同的签名规则。好吧,也许这是他们在组织者中引入计划和“分发”选项之前的一个建议,不管怎样,我只是之前有过。
然后我对豆荚也有同样的问题。调试时一切正常,但存档失败,链接错误。在尝试了这个和那个之后,我把我原始项目的存档配置从“分发”改为“发布”,链接错误消失了。
然而,归档没有显示在组织者,虽然我可以在文件系统中找到它,但它的大小为0。
解决这一切的最后一步是改变“跳过安装”设置为“发布”配置为“NO”。注意,你只需要在你的主项目中这样做,而不是在Pods项目中。最好让pod项目保持原样,因为它是在每次运行“pod install”时生成的。
更新
刚刚得到CocoaPods开发人员的答复
它似乎对我不起作用,因为我已经正确设置了Pods配置。
但它可以帮助其他人。
如果Xcode在链接时报错,例如Library not found for -lPods,它不会检测到隐式依赖。
Go to Product > Edit Scheme
Click on Build
Add the Pods static library, and make sure it's at the top of the list
Clean and build again
If that doesn't work, verify that the source for the spec you are trying to include has been pulled from github. Do this by looking in /Pods/. If it is empty (it should not be), verify that the ~/.cocoapods/master//.podspec has the correct git hub url in it.
If still doesn't work, check your XCode build locations settings. Go to Preferences -> Locations -> Derived Data -> Advanced and set build location to “Relative to Workspace”.
http://docs.cocoapods.org/guides/getting_started.html
CocoaPods在GitHub上的wiki在他们的常见问题解答中有正确的答案:
Go to Product > Edit Scheme
Click on Build
Add the Pods static library, and make sure it's at the top of the list
Clean and build again
If that doesn't work, verify that the source for the spec you are trying to include has been pulled from github. Do this by looking in <Project Dir>/Pods/<Name of spec you are trying to include>. If it is empty (it should not be), verify that the ~/.cocoapods/master/<spec>/<spec>.podspec has the correct github url in it.
If still doesn't work, check your XCode build locations settings. Go to Preferences -> Locations -> Derived Data -> Advanced and set build location to "Relative to Workspace".
我把我的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
然后安装了吊舱
这创建了一个新的库libPods-ABC。我的二进制文件必须链接到的A。但错误是它没有删除之前的库,即libPods.a。
解决方案:删除libPods库。a来自Link Binary With Libraries的构建阶段。
我使用旧的cocoapod版本后更新了cocoapods,它建议我更新我安装的pod,因为我更新了很长一段时间。我更新了它,新版本pod更新得很好。但在那之后,我得到了像库没有找到-lPods-xxxprojectName-xxxxxpodName这样的错误
在尝试了这么多的解决方案后,给出的答案在这个thrred,这不是为我工作。然后我去我的项目设置,发现豆荚路径是改变,这是在其他链接标志
检查你的管理方案,以获得正确的pod名称,并在其他链接标志中进行比较,如果不相似,请更改它
旧吊舱路径是l -“lpods - xxxprojectnaxxxxpodname”
但是新的pods只有xxxxxpodName,所以我用新的替换了其他链接标志,如下所示
改为pod路径-l"xxxxxpodName",它是有效的。
我不知道这背后的完美原因,但这可能会帮助一些人。