【问题标题】:Xcode 6.1 & Cocoapods Integration/Dependency Error - library not found for -lPods-{Pod Name}Xcode 6.1 & Cocoapods 集成/依赖错误 - 找不到 -lPods-{Pod Name} 的库
【发布时间】:2014-12-14 22:20:13
【问题描述】:

我刚刚升级到 OS 10.10 Yosemite 和 Xcode 6,在构建带有 CocoaPods 依赖项的 iOS 应用时遇到了问题。

完成清理和构建后,我得到一个Apple Mac-O Linker Error,如下所示

Ld /Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Products/Release-iphonesimulator/ToWatchList.app/ToWatchList normal i386
    cd "/Users/nick/Dropbox/ToWatchList/ToWatchList App"
    export IPHONEOS_DEPLOYMENT_TARGET=8.0
    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 i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk -L/Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Products/Release-iphonesimulator -F/Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Products/Release-iphonesimulator -F/Users/nick/Dropbox/ToWatchList/ToWatchList\ App/Pods/CrashlyticsFramework -F/Users/nick/Dropbox/ToWatchList/ToWatchList\ App -filelist /Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Intermediates/ToWatchList.build/Release-iphonesimulator/ToWatchList.build/Objects-normal/i386/ToWatchList.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lPods-AFNetworking -lPods-AuxRepo -lPods-CrashlyticsFramework -lPods-Reachability -lPods-SSKeychain -lPods-SVProgressHUD -lPods-Tapstream -framework CoreGraphics -framework Crashlytics -framework Foundation -framework MobileCoreServices -framework QuartzCore -framework Security -framework SystemConfiguration -framework UIKit -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=8.0 -lz -lPods -Xlinker -dependency_info -Xlinker /Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Intermediates/ToWatchList.build/Release-iphonesimulator/ToWatchList.build/Objects-normal/i386/ToWatchList_dependency_info.dat -o /Users/nick/Library/Developer/Xcode/DerivedData/ToWatchList-cesjouowyxujojcvvxsvupagyozc/Build/Products/Release-iphonesimulator/ToWatchList.app/ToWatchList

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

我的项目中似乎有 OTHER_LDFLAGS(其他链接器标志),因为如果我通过转到我的应用程序目标 -> 构建设置 -> 其他链接器标志并重新排序该列表中的项目来重新排序我的 pod,我可以让其他 pod 以相同的方式生成链接器错误(所以至少 AFNetworking 没有问题)。 Cocoapods 和 Xcode 不会产生任何其他错误或警告。

到目前为止我已经尝试过:

  • 更新到最新版本的 Cocoapods:sudo gem update cocoapods

  • 注释掉我的 podfile 中的所有 pod,运行 pod update 将它们全部清除,然后取消注释并运行 pod update 以重新下载并安装所有依赖项。

  • 删除我的 pod 文件夹和锁定文件,然后运行 ​​pod install 以从头开始重新安装 pod

不幸的是,这些步骤都没有解决这个错误,所以我猜我需要在我的项目中调整一些构建设置,但我不确定下一步该尝试什么。

【问题讨论】:

  • 我遇到了同样的问题,并且一直在寻找解决方案。
  • 我忘了从 CocoaPods 中读到一条重要的语句,上面写着使用 xcworkspace 文件打开项目,而不是 xcodeproj 文件。这解决了我的问题。
  • @thsorens 很好,很高兴你修复了它。这总是很重要,否则什么都不会起作用,所以感谢您的提醒(尽管这对我来说显然不是问题)。

标签: xcode cocoapods


【解决方案1】:

仔细检查您打开的是.xcworkspace 文件而不是.xcodeproj 文件,这是可能导致此类问题的常见错误。

【讨论】:

  • 这解决了问题而没有删除东西。谢谢!
  • 是的,这确实解决了问题。
【解决方案2】:

为了解决这个问题,我必须在 Application Targets -> General -> Linked Frameworks and Libraries 下删除 libPods.a。它以红色突出显示(表示未找到),但我不需要替换它;只需清除它就足够了。

【讨论】:

  • 我还注意到突出显示的红色 libPods.a 文件。如果觉得有问题,请删除它。在阅读了您的建议后,我很大胆地将其删除。然而它并没有解决原来的问题。我想知道为什么。
  • 我假设您遇到了和我一样的错误?也许我列出的其他一些尝试会有所帮助,或者那些也不起作用?
  • 我和你有同样的问题。
  • 这为我解决了。我的理论是:我早期的 Podfile 没有指定目标,所以 CocoaPods 制作了框架Pods。我后来的 Podfile 有多个目标,所以 CocoaPods 制作了框架Pods_TARGET。但它忘记从链接框架中删除Pods
  • 在简单的 pod 更新后我遇到了同样的问题。在我的 Xcode 目标设置中,我在链接的二进制文件中看到了两个类似的文件:libPods.a 和 libPods-MyProject.a。我记得,libPods-MyProject.a 以前不存在。为了解决这个问题,我简单地删除了 libPods.a 并保留了另一个。
【解决方案3】:

对我来说,问题是我的项目和 Cocoapod 的构建配置不匹配,这(我认为)意味着他们在不同的目录中查找已编译的库。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题。

    我的问题是我的目标上的“构建活动架构”和我的 Pod 目标不完全匹配。

    使它们相同后,问题得到解决。

    【讨论】:

      【解决方案5】:
      1. 转到“项目目标 -> 构建设置 -> 预处理 -> 预处理器宏”。在“Preprocessor Macros”下的所有Debug、Integration、Release中设置“COCOAPODS=1”

      2. 在“项目目标”下的“其他链接器标志”中添加以下内容 $继承 -对象 -lc++ -all_load

      3. 在将部署目标从 7.0 升级到 8.0 并启用 use_frameworks 后遇到同样的问题!

      【讨论】:

        猜你喜欢
        • 2015-03-17
        • 1970-01-01
        • 2015-12-22
        • 2014-07-27
        • 1970-01-01
        • 1970-01-01
        • 2014-03-05
        • 2018-03-28
        • 2014-06-25
        相关资源
        最近更新 更多