Xcode - ld: 找不到-lPods库

217

当我尝试构建iOS应用程序时,我遇到了这些错误。

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

Ld /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator/Totalbox.app/Totalbox normal x86_64
cd /Users/Markus/Development/xcode/totalbox-ios
export IPHONEOS_DEPLOYMENT_TARGET=7.1
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -L/Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator -F/Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator -filelist /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Intermediates/Totalbox.build/Debug-iphonesimulator/Totalbox.build/Objects-normal/x86_64/Totalbox.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -ObjC -framework CoreGraphics -framework Foundation -framework MobileCoreServices -framework QuartzCore -framework Security -framework SystemConfiguration -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=7.1 -framework CoreGraphics -framework UIKit -framework Foundation -lPods -Xlinker -dependency_info -Xlinker /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Intermediates/Totalbox.build/Debug-iphonesimulator/Totalbox.build/Objects-normal/x86_64/Totalbox_dependency_info.dat -o /Users/Markus/Library/Developer/Xcode/DerivedData/Totalbox-clpeqwpfvwuhpleeejnzlavncnvj/Build/Products/Debug-iphonesimulator/Totalbox.app/Totalbox

在构建设置中的PODS ROOT:

${SRCROOT}/Pods

我没有创建这个Xcode项目——只是从git上拉下来查看。

26个回答

660

如果项目使用CocoaPods,请注意始终打开 .xcworkspace 文件而不是 .xcodeproj 文件。


2
我也发现构建 pod target 而不是普通的 Xcode target 很有帮助。 - Don Simon
2
打开后,我无法运行我的项目。我该怎么办? - Inuyasha
1
进入项目文件夹并运行“pod update”。如果您没有安装pod,请搜索如何安装它。 - justinkoh
2
当我打开.xcworkspace时,收到了该错误消息(更具体地说,在一台Mac上可以工作,而在另一台上则无法工作)。在我的情况下,发现问题与重命名项目并将其复制到另一台计算机有关,库未复制到新位置。请比较: /Users/[USERNAME]/Library/Developer/Xcode/DerivedData/[OLDPROJECTNAME]-[LONGRNDCHARS]/Build/Products/Users/[USERNAME]/Library/Developer/Xcode/DerivedData/[NEWPROJECTNAME]-[LONGRNDCHARS]/Build/Products - Yatko
如果您在构建最近添加了 CocoaPods 的 React Native 应用程序时从 Fastlane 中遇到此错误,请注意需要将 gym 配置指向工作区,而不是项目(如上所述 - 感谢 High6):gym(scheme: "appname", workspace: './appname.xcworkspace') - FlatSteve
显示剩余3条评论

102

我也遇到了这个问题。我的CocoaPod安装有问题,没有其他pod能够正确安装。我按照本线程中的评论进行了操作。

基本上,我需要确保我的项目和Pods项目都设置了仅编译活动的架构


7
我必须确保我的项目目标和 Pod 的目标之间也是平等的。 - Nimrod Shai
这种情况每6个月会发生一次,我总是记不住上次是如何解决的... 只构建活动架构...愿我们都能记得。 - Eloy B.

54

经过数小时研究,这个解决方案对我有效:

(免责声明:结果可能因情况而异)

Library not found -lPods-(someCocoapod)错误是由于以下原因导致的多个条目:

Settings(Target) > Build Settings > Linking > 'Other Linker Flags'

许多其他帖子让我去那里看,并且当我玩弄这些条目时,我会看到错误的变化,但我一直得到同样错误的变化。

浪费了太多时间......

我的解决方法:

在“其他链接器标志”列表中删除-lPods-(someCocoaPod)行,但仅当$(inherited)位于顶部时。起初我不确定,但令人放心的是,当我离开编辑模式(继承)时,我仍然看到对我的cocoapods的引用。 我在调试和发布中进行了测试,两者都给我带来了错误,并立即解决了问题。


浪费了太多时间...... 我的解决方法:在“其他链接器标志”列表中删除-lPods-(someCocoaPod)行,但仅当$(inherited)位于顶部时。起初我不确定,但令人放心的是,当我离开编辑模式(继承)时,我仍然看到对我的cocoapods的引用。 我在调试和发布中进行了测试,两者都给我带来了错误,并立即解决了问题。

非常感谢,一切都很顺利。我只在更新到El Capitan上的Swift 2.0时遇到了这个问题。之前完美运行。 - Ovi
1
我只有$(inherited),但同时我还有这些令人沮丧的重复项。我在哪里可以编辑原始值为$(inherited)变量的值? - nickolay
你救了我的一天啊!我被卡在这个问题上好一阵子了……我因为删除了整个Pod项目并重新添加它而出现了这个问题。 - Mihir Mehta
我也解决了。自己肯定想不到! - bmueller
你赢了!运行得非常顺畅。 - Rob Sanders

31

我的问题已通过以下配置解决:

Build Active Architecture Only: YES

当我在使用SDWebImage时遇到问题时,这对我很有帮助……对于那些因为这个Cocoapod组件而来到这里的人们。 - Scott D
1
这解决了我的问题,但又引起了另一个问题。我需要为所有架构构建,而不仅仅是当前的活动架构。 - HotFudgeSunday
在一个旧代码中,我正在集成pods。我遇到了同样的问题。上面的答案有所帮助。 - Shashank Kulshrestha

31

看起来该项目使用了cocoapods,而且您的项目中缺失了一些文件。

您不能仅从git上下载它。 您需要从cocoapods安装它。

如需更多帮助,请参阅CocoaPods入门教程

如果项目使用了CocoaPods,请注意始终打开.xcworkspace文件而不是.xcodeproj文件


1
@RahulPatel 请问如何安装特定的文件,能否分享一下命令? - Ashok Londhe
如果您想使用新的 beta 版本,可以使用:pod 'GoogleAds-IMA-iOS-SDK-For-AdMob','3.0.beta.16' - Berendschot

28
如果您的项目中有多个目标,Cocoapods可能只与其中一个集成良好。 对于我每个额外的目标,我都必须手动链接到“Link Binary With Libraries”中的`libPods.a`。 我的框架列表中的libPods.a

我认为pod install没有将libPods.a文件集成到所有目标中,根据Rizwan的指示,我已经添加了它并且它起作用了...谢谢Rizwan Sattar。 - Wagh
这对我有用,尽管它没有显示为红色。之后我运行了pod install,但它没有添加它,不过一切似乎都正常工作。 - Jules
2
实际上,我需要做的是删除一个过时的 (my-project-name).a 库,因为我之前重命名了该项目,但该库仍然卡在那里。我给你的答案评分是因为它为我提供了问题可能出现的地方的想法。 - kalafun

19

以下步骤可解决与lPods相关的问题:

  • 选择您的项目目标。
  • 进入"Build Phases",然后进入"Link Binary With Libraries"
  • 现在删除造成问题的库的".a"文件。
  • 清理并编译。

这样就可以解决问题了。


在我的情况下,移除 libstdc++.6.dylib 解决了问题! - Igor de Lorenzi
你是如何移除 "libstdc++.6.dylib" 的?因为我需要移除 "-lstdc++.6"。我一直在收到 "library not found for -lstdc++.6" 的错误提示。 - Hari Narayanan
删除“*.a”文件对我很有用。谢谢。 - Nabeel

17
如果有人在使用Cocoapods安装react-native-fbsdk后出现错误,请注意您必须删除项目的build phases中的所有其他.a文件,只保留来自CocoaPods的Only that remains herelibPods-WhateverAppName.a文件。通常情况下,这是由于运行rnpm link和其工作方式引起的。从我的构建阶段中删除Facebook核心.a文件后,我的项目再次运行正常。

12

以上答案都没有解决我的问题。

我所做的是在target部分之外使用pod命令运行pod install。例如:

#WRONG
pod 'SOMEPOD'

target "My Target" do
    pod 'OTHERPODS'
end

我迅速修复了它,将错误的pod放回它应该属于的target部分,并再次运行pod install

我快速修复了问题,并将有问题的pod放回到其应该属于的target部分,然后再次运行pod install

# CORRECT
target "My Target" do
    pod 'SOMEPOD'
    pod 'OTHERPODS'
end

但其间发生的事情是,库-libPods.a被添加到我的链接库中了,这个库已经不存在了,也不应该存在,因为已经有-libPods-My Target.a在里面了。

所以解决办法是进入我的目标的常规设置,然后转到链接的框架和库,只需从列表中删除-libPods.a即可。


我为我的项目正确安装了CocoaPods,但是遇到了与OP相同的错误。删除-libPods.a对我有帮助。非常感谢您,先生。 - NKorotkov
我正在更新一个旧项目,删除了旧的Podfile并运行了pod init来设置一个新的文件,发现旧文件就像你的“#WRONG”方式,而新文件则像“#CORRECT”。谢谢! - BJ Miller

11

我的步骤:

  1. 删除pods文件夹和'Pods'文件。
  2. 在终端中输入"pod install"。
  3. 在终端中输入"pod update"。

除了如前面答案所述确保"Build Active Architectures"设置为YES外,这就是我所做的事情。


在我的情况下,如果是 -lHelpshift 或者 pod 的特定名称。那么我只会删除特定的文件夹,即 Pods/Helpshift。然后再次运行 pod install。不需要更新。现在它可以工作了。 - haxpor
1
删除所有的Pod,然后重新安装有所帮助。 - Sanad Liaquat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接