【问题标题】:Apple Mach -O Linker command failedApple Mach -O Linker 命令失败
【发布时间】:2016-02-05 18:49:31
【问题描述】:

更新我的 POD 安装后,Xcode 出现了一个新问题:

【问题讨论】:

    标签: ios xcode xcode6 linker-errors duplicate-symbol


    【解决方案1】:

    确保在使用 pod 时打开 .xcworkspace 文件而不是项目文件 (.xcodeproj)。这应该可以解决链接问题。

    【讨论】:

    • 那么在此之后,我可以随时打开我的项目还是必须一直在 .xcworkspace 中工作?我也可以通过 .xcworkspace 将我的应用程序提交到 iTunes Connect 吗?
    • 从现在开始,您将需要在 .xcworkspace 之外工作。是的,您可以构建应用程序的存档并从那里发布。
    • 我打开了 .xcworkspace 文件,它是空白的,什么也没显示。不过我的构建是成功的。有什么想法吗?
    • 是的,对我来说就是这样。我不知道为什么我打开 .xcodeproj 而不是 .xcworkspace :(
    【解决方案2】:

    有时您只需要干净的构建。它帮助了我。 要清理构建,请转到 Product -> Clean

    【讨论】:

    • 对我有用,我的错误发生是因为我从我的项目中删除了 pod,然后尝试运行该应用程序。当我清理它时,它就像一个魅力。
    【解决方案3】:

    有几种情况会导致此问题。目前,这个问题没有任何可接受的答案,我也找到了针对同一问题的另一个解决方案,我在这里发布我的答案/经验。

    在您的应用程序中,转到 Target -> Build Settings,然后您将找到以下属性。

    • CLANG_WARN_INFINITE_RECURSION
    • CLANG_WARN_SUSPICIOUS_MOVE
    • GCC_NO_COMMON_BLOCKS

    将这些值设置为 NO,然后清理并构建项目。

    【讨论】:

    • 这是为我做的,谢谢!。虽然搜索GCC_NO_COMMON_BLOCKS 并没有找到那个设置,只是在Build Settings中搜索common blocks
    • 这并没有解决问题,它只是禁用了警告
    • 可以提供更多细节吗?我根据 XCode 升级建议切换了这些设置,并再次禁用它们修复了我的项目。我怎样才能解决问题而不是忽略它们
    • 在“代码生成”下将“无公共块”设置为“否”对我有用。
    【解决方案4】:

    以下步骤帮助我摆脱了这个问题:

    1. 转到项目路径并删除 Pods 文件夹和 Podfile.lock 文件。
    2. 使用“pod install”命令重新安装 pod。
    3. 在运行前打开 xcworkspace 并清理它。

    希望它能像我一样节省别人的时间。

    【讨论】:

      【解决方案5】:

      关闭您的项目并转到项目路径并使用.xcworkspace 而不是.xcodeproj 选择您的项目。 您现有项目不包含您链接的任何库的原因。

      【讨论】:

        【解决方案6】:

        从目标中删除 WikitudeSDK 的本地文件。 Xcode 对库的路径感到困惑,选择 pod 还是本地。

        还可以尝试重新安装 podfile 并从 pod 文件中删除 wikiitude。 在链接器搜索路径设置中,在构建设置中,检查提到的路径以找到所需的库。

        在更新 pod 之前最后安装 gems

        【讨论】:

        • 完美 :) 谢谢!
        【解决方案7】:

        您必须选中 Link Binary With Libraries 选项。有时您构建的 pod 不再包含在您的项目中。

        在左侧面板上单击您的项目名称,然后再次在 Targets 下(单击名称),然后Build Phases > Link Binary With Files。删除所有不使用的内容。

        【讨论】:

          【解决方案8】:

          已解决 - 最佳方式

          pod deintegrate  
          pod install
          

          在运行前打开 xcworkspace 并清理它。

          【讨论】:

            【解决方案9】:

            我遇到了类似“变量名”重复的错误。您需要检查所有 .m 文件的所有变量和函数名称,并确保它在任何其他文件中都不相同。然后清理并构建。

            它对我有用。

            【讨论】:

              【解决方案10】:

              我的解决方案是打开位于我的“/platforms/ios”文件夹中的 .xcodeproj 的 .xcworkspace 文件。

              【讨论】:

              • 我也遇到了同样的问题。感谢您的提示! :)
              【解决方案11】:

              我遇到了类似的问题,我只需要确保在将框架添加到项目中时启用“必要时复制”复选框。仅供参考对我不起作用...

              【讨论】:

                【解决方案12】:

                我不知道为什么会在我的情况下发生错误,我正在重用我前一段时间创建的另一个项目中的一些代码,在我修改了代码之后,我总是得到“Apple Mach -O Linker command failed”-信息。我最好的猜测是,它的发生是因为我从项目中创建/删除了一些文件。

                为我解决了这个问题:

                • 新建项目
                • 将所有必要文件从旧项目复制到新项目(拖放,不要忘记“如果需要则复制”复选框)
                • 构建并查看它是否有效

                听起来很愚蠢,我不知道为什么,但它奏效了。

                【讨论】:

                  【解决方案13】:

                  我正在使用 XCode 编译 ionic 3 应用程序。

                  cli packages: (/usr/local/lib/node_modules)
                  
                      @ionic/cli-utils  : 1.10.1
                      ionic (Ionic CLI) : 3.10.1
                  
                  global packages:
                  
                      Cordova CLI : 7.0.1 
                  
                  local packages:
                  
                      @ionic/app-scripts : 2.1.4
                      Cordova Platforms  : android 6.2.3 ios 4.5.0
                      Ionic Framework    : ionic-angular 3.6.0
                  
                  System:
                  
                      ios-sim : 5.0.8 
                      Node    : v8.4.0
                      npm     : 5.4.0 
                      OS      : OS X Yosemite
                      Xcode   : Xcode 7.2 Build version 7C68 
                  

                  ios的大部分文件都没有写权限,这是主要问题。
                  我刚刚更改了 ios 文件的权限,并通过使用命令解决了问题。

                  sudo chmod -R 775 platforms/ios/ 
                  

                  效果很好。

                  【讨论】:

                    【解决方案14】:

                    我在覆盖项目时遇到了错误。

                    之后仍然遇到错误:

                    在更改到 github 中的不同分支后,错误得到了解决,但可能是其他故障排除方法之一发挥了作用。现在所有分支都在 xcode 上运行,没有 Mach -O 链接器错误。

                    【讨论】:

                      【解决方案15】:

                      我也遇到过同样的问题。我声明了两个同名的类。因此它与类名冲突。更新类名后它对我有用。

                      【讨论】:

                        【解决方案16】:

                        您要做的第一件事是删除其中的文件 /Users/Yourname/Library/Developer/Xcode/DerivedData/YourAppName-xxxx 然后重新启动您的 Xcode。这不是开玩笑!

                        如果您收到类似“duplicate symbol_OBJC_CLASS_$_Pod in:”的错误, 你应该去 TARGETS->Build Phases->Compile Sources 并删除额外的文件。

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2014-12-03
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2017-06-22
                          • 2012-04-06
                          • 1970-01-01
                          • 2013-02-12
                          相关资源
                          最近更新 更多