错误:ld:找不到带有 CocoaPods 的 -lPods 的库

Posted

技术标签:

【中文标题】错误:ld:找不到带有 CocoaPods 的 -lPods 的库【英文标题】:Error: ld: library not found for -lPods with CocoaPods 【发布时间】:2014-05-06 08:44:34 【问题描述】:

在我用 Cocoapods 安装 DTCoreText (https://github.com/Cocoanetics/DTCoreText) 后,当我尝试运行模拟器或设备时总是出错!

ld: warning: directory not found for option '-L/Users/example/Desktop/ios/Pods/build/Release-iphoneos'
ld: warning: directory not found for option '-L/Users/example/Desktop/ios/Pods/build/Debug-iphoneos'
ld: library not found for -lPods-example
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

在我的“Link Binary With Libraries”中,“libPods”部分是红色的:

这是我的构建设置:

我的项目的设置:

我的 Pod 的设置:

编辑:

我不确定是什么问题,但是当我删除所有 DTCoreText 和 Cocoapods 的东西并重新安装所有东西时,我解决了它!

【问题讨论】:

您是否设法解决了这个问题?谢谢 pod 清单锁定部分是一个脚本。这不是错误。 你解决了吗?我可以在模拟器上构建,但不能在设备上构建 【参考方案1】:

建议尝试以下对我有用的方法:

a) 从 Target Settings 视图的“Library”中搜索并双击以检查 Library Search Paths 的值

b) 列出了两个值 $(inherited)$(PROJECT_DIR)/Pods/build/Debug-iphoneos。删除后者。

c) 进行全面清理、构建和运行

d) 再次运行pod install。请注意,条目未恢复。

【讨论】:

您的回答完美!为什么会这样,$(PROJECT_DIR)/Pods/build/Debug-iphoneos 最初是从哪里来的? 我怀疑当您执行pod install 时,安装脚本需要某种状态(如果该状态不存在,则无法非常有效地处理事情)。我不确定$(PROJECT_DIR)/Pods/build/Debug-iphoneos 最初来自哪里,但删除它并运行全新安装似乎可以恢复预期状态并允许安装正确完成。 (请注意,这都是推测)。 似乎合乎逻辑。我认为这是我第二次发生这个错误,所以我想确保我没有误解一些基本的东西。非常感谢您的洞察力! 我认为这应该报告给 Cocoapods 家伙。这肯定是错误,应该很容易追踪,因为这条奇怪的路径“build/Debug-iphoneos” 好点 Paul - 我原以为这是一个已知问题,但因为 +1 不断出现这个问题,它可能值得一提 Cocoapods 的男女朋友。我现在要在他们的 Github 上打开一些东西。【参考方案2】:

这也可能有帮助:

    在您的主项目(不是 Pod)中选择主目标 转到构建阶段选项卡 转到将二进制文件与库链接 删除导致问题的库(它可能是红色的)

【讨论】:

在这个问题的无数解决方案中,这是迄今为止最简单的一个。为我做了诀窍。谢谢。【参考方案3】:

确保您打开的是 .xcworkspace 文件,而不是 .xcodeproj

【讨论】:

正是我的问题。 非常感谢。刚刚开始 iOS 开发。【参考方案4】:

在我的链接二进制文件中,我同时拥有libPods.alibPods-MyProj.a。我之前更新了我的 Podfile 以拥有两个单独的目标(让它在 Swift 中通过桥接编译测试),这意味着我必须手动删除旧的 libPods.a 依赖项。

【讨论】:

你是怎么做这件事的?我确实从 LInked Binary Libraries 中删除了 libPods-* 类型的所有内容,但仍然遇到同样的问题。我在这里开始了一个新线程:***.com/questions/31921701/… 是的!这也是我的问题;我正在编写一个带有 App Extension 的应用程序,它不允许在我正在使用的几个 pod 中使用某些代码,所以我将它拆分为 Podfile 中的两个目标。没有意识到虽然它添加了到我的两个新目标的链接,但项目中的两个目标仍在尝试链接原始的统一 Pods 库。非常感谢您的回答! 我想解决这个问题。我开始时没有定义每个目标的 pod,然后由于测试,所以有 2 个目标,还有一个不再使用,所以删除 libPods.a 来解决这个问题 这是一个非常常见的问题,也是正确的解决方案。当您的项目有多个目标,但只有一个具有 pod 依赖项时,可能会发生这种情况。更新 pod 文件时也可能发生。【参考方案5】:

我发现我的Other Linker Flags构建设置中缺少$(inherited)。应用此选项修复了我看到的缺失库问题。

【讨论】:

你能提供更多细节吗?我应该在哪里添加这个? @NunoGonçalves 在 Xcode 中,单击您的项目文件,您将看到右侧列出的项目目标。单击Project Target,然后在Build Settings 下,搜索设置Other Linker Flags,您应该会看到它已经列在那里。检查此链接link【参考方案6】:

我发现选择“查找隐式依赖项”(在产品/编辑方案下)将解决此问题,而不必将 pod 添加为目标。

【讨论】:

通常默认选择。 在同一位置,Pod 必须位于列表顶部【参考方案7】:

在目标的构建设置页面中查找“库搜索路径”。将Debug的文件夹名称由Debug-iphoneos改为Debug-iphonesimulator

【讨论】:

【参考方案8】:

确保实际构建了缺失的 pods 库。为此,请打开构建方案

Product > Scheme > Edit Scheme... > Build

添加 Pods 目标并将其放在抱怨缺少库的目标之前(在我的情况下,这是 UI 测试 - 我只是为此苦苦挣扎了几个小时......)

【讨论】:

【参考方案9】:

造成这个问题的原因有很多。

我们需要检查:

构建设置$(inherited) 检测所有隐式依赖项 .......

疑难解答:http://guides.cocoapods.org/using/troubleshooting.html

【讨论】:

【参考方案10】:

对我来说,错误是:Pods 目标不包含 i386 所需的架构切片。所以我点击了 Pods 项目 --> Pods-ProjectName 目标,在 Build Settings 中,将 Build Active Architecture Only 设置为 NO 对于 DebugRelease。这可以确保 Simulator 和 Device 切片都已构建。模拟器使用i386架构,实际设备使用x86-64。所以你必须确保所有依赖项目的所有依赖目标都在构建,如果你想同时在模拟器上运行和侧加载到设备。

【讨论】:

【参考方案11】:

当您使用 App 扩展时,导航到扩展目标,并过滤到库搜索路径,删除编译器警告给您的路径。

【讨论】:

【参考方案12】:

Build Settings 中从VALID_ARCHS 中删除armv7 为我解决了这个问题(Xcode 10.3)。在VALID_ARCHS 中只有armv7sarm64arm64e 后,我能够提交。

【讨论】:

【参考方案13】:

我先跑

sudo rm -r /Library/Developer/CommandLineTools

删除命令行工具目录。 然后我再次安装了命令行工具

xcode-select --install

这解决了我的问题。

【讨论】:

以上是关于错误:ld:找不到带有 CocoaPods 的 -lPods 的库的主要内容,如果未能解决你的问题,请参考以下文章

Cocoapods Google Analytics ld:找不到框架

ld:通过 cocoapods 从 4.x.x 升级到 5.x.x firebase 后找不到框架 FirebaseAnalytics

Cocoapods - 找不到框架 FirebaseCoreDiagnostics

找不到cocoapods框架

cocoapods - ld:框架未找到Pods

Cocoapods:找不到重复的库