【问题标题】:xcode library not found未找到 xcode 库
【发布时间】:2012-07-06 16:47:02
【问题描述】:

我收到以下错误:

ld:找不到 -lGoogleAnalytics 的库 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我花了一些时间在谷歌上搜索,但找不到解决此问题的方法。我是 xcode 的新手,这是我需要处理的现有项目。

【问题讨论】:

  • 每当我尝试归档 .ipa 时都会遇到同样的错误。你是怎么解决的?

标签: xcode


【解决方案1】:

您需要设置项目的“链接器搜索路径”(对于调试和发布版本)。如果这个库位于项目的同级目录中,那么您可以像这样设置它:

$(PROJECT_DIR)/../GoogleAnalytics/lib

(您要避免使用绝对路径,而是保持库目录相对于项目)。

【讨论】:

  • 你没有告诉怎么做。显示,不要告诉。
  • 在构建设置中?我需要发布图片才能使答案有效吗?
  • @trojanfoe,是的,因为这会帮助其他可能没有您在 Xcode 方面经验丰富的人。例如,我熟悉 Header Search Paths,但我不知道“链接器搜索路径”在 Build Settings 中的位置。
  • @Daniel 链接器搜索路径是链接器 (ld) 的 -L 选项。与其说是使用 Xcode 的经验,不如说是使用底层工具的经验; Xcode 提供了对编译器/链接器/等选项的简化访问。但是假设您知道这些选项的作用。
  • @Daniel,这是 XCode 的挑战:如果我满足于使用命令行脚本构建东西,我可以添加任何我想要的选项。使用 XCode,知道您想要的选项与知道如何让 XCode 添加它是不一样的。因此,IMO 确实是有问题的 XCode 经验。即使您在应该添加的选项(例如库搜索路径)中添加了一个选项,它仍然经常无法正常工作,而且调试错误非常困难。
【解决方案2】:

在我的例子中,项目使用 CocoaPods。我的项目中缺少一些文件。

所以我从 CocoaPods 安装它:https://cocoapods.org/

如果项目使用 CocoaPods,我们必须注意始终打开 Xcode 中的 .xcworkspace 文件夹而不是 .xcodeproj 文件夹。

【讨论】:

  • 原因是什么“如果项目使用 CocoaPods,我们必须注意始终打开 .xcworkspace 文件夹而不是 .xcodeproj”??
  • 你拯救了我的一天)
  • 你也拯救了我的一天!
【解决方案3】:

总而言之,Xcode找不到library/header/framework的位置,然后你告诉Xcode他们在哪里。

Build Settings --> Library/Header/Framework Search Paths 中设置 Xcode 用来查找 library/header/framework 的路径。

说,现在找不到-lGoogleAnalytics,所以你将-lGoogleAnalytics所在的目录添加到Library Search Paths

【讨论】:

    【解决方案4】:

    就我而言,我有一个项目,在“构建设置 > 其他链接器标志”中有很多条目

    我需要把它减少到只是

      $(inherited)
      -ObjC
    

    旧设置:

    更新设置:

    【讨论】:

      【解决方案5】:

      对我来说,我打开 projectname.xcworkspace 文件,一切正常。

      【讨论】:

        【解决方案6】:

        如果您安装了 pod,请确保打开 工作区文件夹(白色 Xcode 图标)而不是项目文件夹。这解决了library not found for ... 错误。非常简单的问题,但我被困了很长时间。

        【讨论】:

        • 谢谢!!这对我有用。正如你所说,这很简单,但直到我看到你的答案我才意识到!
        【解决方案7】:

        如果您使用 Pods 将 GoogleAnalytics iOS SDK 包含到您的项目中,值得注意的是,自 3.0 版本以来,您的 Other Linker Flags 需要包含 -lGoogleAnalyticsServices 而不是旧的 -lGoogleAnalytics

        【讨论】:

          【解决方案8】:

          如果您的库文件名为 libGoogleAnalytics.a,您需要输入 -lGoogleAnalytics 以确保 .a 文件按照您的预期命名

          【讨论】:

            【解决方案9】:

            这对我有用:

            1. 转到构建设置 -> 链接 -> 其他链接器标志 -> 删除除$(inherited) 以外的所有内容
            2. cd ios && pod update

            【讨论】:

            • 这对我有用。感谢您节省了一天
            【解决方案10】:

            您也可以尝试使用--use-library 选项lint,因为从 v0.36 开始,cocoapods lint 库默认作为框架

            【讨论】:

              【解决方案11】:

              问题可能如下:SVN 忽略 .a 文件,因为它的全局配置,这意味着有人没有将 libGoogleAnalytics.a 提交给 SVN,因为它没有出现在 SVN 中。因此,现在您尝试从 SVN 中检查项目,该项目现在错过了 libGoogleAnalytics.a(因为它被忽略且未提交)。当然构建失败了。

              您可能希望将全局忽略配置从 SVN 更改为停止忽略 *.a 文件。

              或者只是将缺少的 libGoogleAnalytics.a 文件手动添加到您的 SVN 工作副本中,而不是更改 SVN 全局忽略配置。

              然后将 libGoogleAnalytics.a 重新添加到您的 XCode 项目并提交到 SVN。

              【讨论】:

                【解决方案12】:

                在 XCode 10.1 中,我必须将“库搜索路径”设置为类似 $(PROJECT_DIR)/.../path/to/your/library

                【讨论】:

                • 如何找到库的路径?
                【解决方案13】:

                对我来说这是一件愚蠢的事情:我的 mac 将文件上传到了 iCloud,这就是 Xcode 找不到它的原因。

                如果你关闭自动上传,它就不会再发生了。

                【讨论】:

                  【解决方案14】:

                  以上方法都不适合我,确保 Pod 文件平台 :ios, '11.0' 与 XCODE 设置中的最小部署目标相匹配

                  【讨论】:

                  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-02-25
                  • 2015-10-19
                  • 2016-02-06
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-10-22
                  相关资源
                  最近更新 更多