【问题标题】:directory not found Apple Mach-O linker warning but Library Search Path and Framework Search Path are empty目录未找到 Apple Mach-O 链接器警告,但库搜索路径和框架搜索路径为空
【发布时间】:2013-10-04 09:37:25
【问题描述】:

我收到了这些消息:

ld: warning: directory not found for option '-F"/Users/joel/Development/GHaikuTabbed"'
ld: warning: directory not found for option '-F"/Users/joel/Development/GHaikuTabbed/../../../Downloads"'

但是当我转到构建设置时(如‘ld: warning: directory not found for option’ 所建议的那样),库搜索路径和框架搜索路径是空的,所以没有什么可删除的。

对我可以做些什么来摆脱这个警告的想法?

【问题讨论】:

  • 这个运气好吗?昨天遇到了同样的问题,一直没有解决。尝试了一堆我在 SO 上找到的建议。
  • 好吧,两天前我又试了一次,突然路径不再是空的,所以我可以删除它们。所以也许答案是稍后再试?
  • 我知道这是一个老问题,但仍然困扰着 Xcode 7 用户:要特别小心哪个“目标”会出现此错误。例如,当升级到 Xcode 7 时,经常会在“Tests”目标中引入此错误,人们经常会关注错误目标的路径设置。

标签: ios xcode


【解决方案1】:

这里是根据之前发布的Apple Dev Forum 来描述如何避免问题。它对我有用,所以我为那些不想去论坛注册的人重新发布描述。

该错误是由于 XCode 5 在处理用户向项目中添加新文件或文件夹时出现的错误。

Xcode 正在修改“库搜索路径”构建设置,并将其弄得一团糟。 它不是添加 $(SRCROOT)/ 而是向所有新项目添加完全根路径,并将随机数量的 /// 添加到字符串的其他元素中。 在某些情况下,它似乎也复制了源路径,可能是因为它破坏了现有路径,并且认为它们需要再次添加。

解决办法:

  1. 将您的库搜索路径字符串复制到文本编辑器中。
  2. 删除所有不应该存在的完全根目录路径,并将它们替换为通常的 $(SRCROOT)/MyFiles/ 类型路径。
  3. 删除所有多余的斜线并确保每个路径的开头和结尾都有一个 " 字符,以防止文件名中出现空格。
  4. 将编辑后的字符串粘贴回构建设置中。
  5. 清理,然后构建。应该会恢复正常。

如果您将新文件添加到项目中,这个错误很可能会再次出现,所以要小心。

【讨论】:

  • 该线程的附加说明给我带来了很多麻烦:没有反斜杠来逃避您的报价! For my case there were some duplicate entries on the Library Search Paths and I had to get rid of one of them and I made sure the path entries start with a double quote and end with a double quote. Sometimes the quotes could be escaped with a backslash; make sure to remove the backslash if you see them there.
  • 这正是发生在我身上的事情。我的无缘无故使用 \"$(SRCROOT)/Myfiles\" 并在删除 \" 后解决了问题
  • 太棒了!这行得通。我在 GIT 服务器上遇到了很多问题,这看起来很有帮助。
  • 我支持在引号之前删除前导 \ 解决问题的事实。似乎在 xcode 5 中添加新的 sdk 会破坏库路径。很棒的功能。
  • 就我而言,我刚刚将 Flurry 添加到我的项目中。我将整个 SDK 放到了我的项目文件夹下,并包含了 libFlurry ....a。 libFlurry 的路径中有很多空格。一切正常,直到我关闭并重新打开 Xcode (5)。图书馆搜索路径最终以沿空格分隔的路径的每个部分的条目结束。重新组合路径并将其括在引号中以更正。
【解决方案2】:

我的 project.pbxproj 看起来像这样:

LIBRARY_SEARCH_PATHS = (
        "$(inherited)",
        "\\\"$(SRCROOT)/AdMob-v6.4.1\\\"",
        "/MyProject/AdMob-v6.5.1",
); 

我关闭了 MyProject,删除了包含 AdMob-v6.4.1 的行,重新打开了项目,执行了“验证项目设置”,清理并构建,现在一切都很好。

【讨论】:

    【解决方案3】:

    是的,Xcode 有时很糟糕。

    您是否尝试过清理构建(Product > Clean Build Folder / Shift-Cmd-K)并重试?

    您可以做的另一件事是搜索 [project_name].xcodeproj/project.pbxproj 中的两个条目,删除它们,关闭 XCode,重新打开,清理构建文件夹并重试。

    祝你好运!

    【讨论】:

      【解决方案4】:

      总结@user2963906 的建议,我展示了我对这个问题的解决方案,我认为这很容易。

      我假设您的项目文件夹中有所有文件和库。

      1. 打开您的项目目标
      2. 查找搜索路径主题和库搜索路径
      3. 在此处选择并删除所有路径
      4. 然后像这样添加路径:$(SRCROOT)/"Your App Name"
      5. 在同一个窗口中,从右侧将下拉列表从non-recursive更改为recursive
      6. Shift-⌘-K 并运行您的项目

      【讨论】:

        【解决方案5】:

        我在 iOS 开发者论坛上的案例中找到了解决方案。 Xcode 5 发生在我身上。见Massive Linker Error Warnings (directory not found for option) yet 。对我来说,这是由 Xcode 5 破坏了“库搜索路径”构建设置造成的。

        【讨论】:

          【解决方案6】:

          简单的解决方案:

          这对我有用

          当您想通过 xcode 5 及更高版本向项目添加新文件或文件夹时,请按照以下简单步骤操作。(请不要忘记备份您的项目)。

          1. 在旧 XCode 中打开您的项目(我推荐 XCode 4.6.3)
          2. 添加您的文件或文件夹。 (它不会像在 XCode 5 中那样弄乱你的库搜索路径)
          3. 关闭旧的 xcode 并使用 XCode 5 打开您的项目并开始编码。

          【讨论】:

            【解决方案7】:

            我遇到了同样的问题,但由于项目属性窗口中没有显示任何库文件夹,因此无法按照步骤修复它。

            所以我以另一种方式解决了它(您需要能够使用终端和VIM编辑器。还要备份项目以防万一)

            1. 打开终端窗口
            2. 转到项目文件夹。
            3. XCode 项目是一个文件夹。使用 cd 项目名称进入该文件夹。
            4. 使用 vim 打开并编辑 project.pbxproj 文件。
            5. 通过使用 / 搜索并在该行上使用 dd 命令将其删除来删除对违规行的引用。
            6. 使用 :wq 命令保存

            在 XCode 中打开项目并构建。像魅力一样工作。

            【讨论】:

              【解决方案8】:

              我必须用 \

              转义任何空格

              例如:

              /Users/Me/Folder\ with\空格\(和\括号\)

              在库搜索路径中

              【讨论】:

                【解决方案9】:

                这对我有用:

                创建这个真实的目录(没有内容),将它们添加到项目中,通过删除引用删除,清理,真正删除

                【讨论】:

                  【解决方案10】:

                  在项目文件夹 -> 目标中,在“构建设置”下搜索“库搜索路径”并简单地删除调试和发布区域中的先前路径。

                  现在使用 + 符号在行下添加一行

                  $(PROJECT_DIR)/库

                  注意:添加上述行后,从弹出窗口中单击退出。它会自动显示完整路径。如果在 $(PROJECT_DIR)/

                  之后添加任何更正,请使用 Finder 检查此路径

                  Clean , Build and Run ... 很简单,它清除了那个错误。 :)

                  -阿努普

                  【讨论】:

                  • 您好,欢迎来到 stackoverflow。为什么您觉得有必要回答几乎 1 年前已经回答和接受的问题?
                  • 嗨@HugoSFerreira,因为我是这个网站的新手,谢谢你的邀请,对于同一个问题,似乎每个答案都不同。就我而言,最近我遇到了这个问题,但是这些答案都没有奏效,但是使用我回答的步骤解决了问题。所以我想,你很清楚答案取决于 Xcode 版本,无论它何时发布,但它可能对某人有所帮助。那是...
                  猜你喜欢
                  • 1970-01-01
                  • 2013-05-14
                  • 2015-08-29
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多