找不到-lPods库

348

当我尝试归档项目时出现了错误。这是我的环境。

  • 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'

我不确定这个错误的含义是什么?


一个问题的原因,没有任何答案涉及。在这里检查答案:https://dev59.com/wGAg5IYBdhLWcg3wBXER#29497314 - hasan
42个回答

3
在更新了Cocoapods之后,旧版本的Cocoapod建议我更新已安装的pod,因为有重大更新。我更新了它,新版本的pods也成功更新了。但是在那之后,我遇到了错误,如下所示:library not found for -lPods-xxxprojectName-xxxxxpodName 在尝试了这个线程中提供的许多解决方案后,没有一个对我起作用。然后我去我的项目设置里面发现pods路径被更改了,原来在Other Linker Flag里。 检查你的Manage Schemes是否正确,与Other Linker Flag进行比较,如果不相似,请进行更改。 旧的pod路径是-l"lPods-xxxprojectName-xxxxxpodName",但是新的pod只有xxxxxpodName,所以我用下面的代码替换了Other Linker Flag更改后的pod路径为-l"xxxxxpodName",它可以工作。 我不知道背后的完美原因,但这可能会帮助某些人。

2
在我的情况下,pod install解决了问题,之后创建了分发和发布方案。

2

通过以下步骤解决:

  • 更新cocoapods安装。($ [sudo] gem install cocoapods)
  • 重新安装项目下的依赖项。(pod install)
  • 清理并重新构建/归档。

这个方法非常有效。我更新了项目中的一个pod,结果它出了问题。我按照这些步骤操作后,问题得到了解决。这是一个快速修复。谢谢。 - agarcian

2

这里的内容并没有帮助到我,但它确实让我找到了正确的解决方法。最终我采取了以下步骤:

  1. 分析错误信息。

    它说“Library not found: -lPods-...”,因此无法找到特定的库。如何解决?确保该库在搜索路径中。那么这个库在哪里?

  2. 查找库所在位置。

    我在终端中在~/Library/Developer/Xcode/DerivedData文件夹中键入find . | grep -e 'Pods-.*\.a'。我发现我的libPods-...库位于许多地方,例如~/Library/Developer/Xcode/DerivedData/[generated-name]/Build/Products/Release-iphonesimulator/libPods-[name].a

  3. 将其中一个文件夹添加到库搜索路径中。

    如果我们将其中一个文件夹添加到库搜索路径中,问题就会消失。但是,所有路径都有一个[generated-name]文件夹,例如我的情况下是[Project]-guyraaahpczkqmhghlwgsdsqyxxs

    那么我们如何负责任地将该文件夹添加到搜索路径中?通过使用构建时间变量!我们可以通过查看这个答案来获取现有变量的列表。结果发现其中一个定义的变量名为${PODS_CONFIGURATION_BUILD_DIR},而我的libPods-[Product].a就在那个文件夹里!

  4. 现在将该文件夹添加到库搜索路径中。

    这是容易的部分,也是我对这个问题的实际答案。进入Build Settings -> Search paths -> Library search,确保它已经折叠,并双击<Multiple Values>

    在弹出的对话框中,点击左下角的“+”号。现在输入"${PODS_CONFIGURATION_BUILD_DIR}",并将下拉选项保留为“non-recursive”。按<Enter>键。现在将此条目拖回到最上面,使其直接位于$(inherited)下方。

  5. 你完成了。重新构建你的产品!

    我的错误现在已经消失了。点赞这个答案,关闭标签,忘记这个问题曾经存在过。


哦我的天啊,我试了这么多方法后,终于找到了那个东西放在哪里,一直在思考如何包含那个奇怪的文件夹,然后我发现了你关于构建时间变量的答案。太好了。谢谢您,先生。 - nacmartin

1
如果你仍然遇到此问题,请尝试:
pod update

为我完成了工作,希望这对您有所帮助。


1

尝试

使用'YouTarget1'、'YouTarget2'等进行链接...

我的项目一直在工作,但突然停止编译。然后添加了"link_with",就恢复正常了。

显然,现在它只连接到第一个目标,这就是链接所说的:

http://guides.cocoapods.org/syntax/podfile.html#link_with


这个对我有用...我的问题是,第一个目标正在构建,而第二个目标失败了,并出现了“ld:找不到-lPods的库...” - Muxor

1

我尝试了这个帖子中的每一个答案,但都没有成功。最终通过将我的目标项目中的“预配置构建产品路径”与Pods项目中的值进行匹配来解决问题。原来它们在构建到两个不同的输出位置。这个帖子中的其他建议对我都不相关。如果XCode提供了有用的错误描述(比如为什么无法使用该库-文件未找到、找不到匹配的架构等),那就太好了。


1
在这个问题中,如果您已经在系统中安装并更新了Pod,但是Xcode找不到Pods库。为了解决这个问题,请检查可能发生的以下原因:
  1. 您正在使用工作区。
  2. Pods库正在构建。
  3. Pods库在项目的产品组中被引用。
  4. 您的目标将Pods库包含在链接框架构建阶段中。

1

如果您正在使用iOS7和Xcode 5,请执行以下操作:

  • 选择您的Pods项目。
  • 进入目标Pods并在构建设置中选择Architectures->标准架构(armv7,armv7s)。
  • 对于您的每个Pods项目的目标也要执行相同的操作。

1
我在提交归档时遇到了相同的问题。 关于此问题的讨论可以在这里找到: https://github.com/CocoaPods/CocoaPods/issues/155 总之,以下两种方法适用于我:
1. 将“首选项 -> 位置 -> 高级”设置为“自定义(相对于工作区)”; 2. 将 Podfile 设置为 - platform :ios, :deployment_target => "5.0"

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