【问题标题】:Xcode 4.1 fatal error: stdlib modified since the precompiled header was builtXcode 4.1 致命错误:自构建预编译头文件后修改了 stdlib
【发布时间】:2011-10-27 15:26:15
【问题描述】:

构建一个 iPhone 应用程序,使用:

  • Xcode 4.1
  • 基础 SDK iOS 4.3
  • Apple LLVM 编译器 2.1

我开始收到以下错误:

致命错误:文件 '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/../lib/clang/2.1/include/stdint.h' 自构建预编译头后已修改

我已尝试重新安装 Xcode 和 OS X - 不走运。这是什么原因造成的?

【问题讨论】:

  • 在这里查看我的答案:link我希望它会帮助某人:)。

标签: ios xcode compiler-errors


【解决方案1】:

首先通过 Product -> Clean 菜单尝试一个干净的构建(从 XCode 4.6.2 开始)。

如果仍然不起作用,请打开 Organizer(从菜单中选择 Window->Organizer)。打开管理器后,从窗口顶部的工具栏中选择项目。左侧是项目列表,选择您遇到问题的项目。

详细信息面板(列表右侧)将显示项目名称、位置、状态。其下方的行显示派生数据所在的位置。单击最右侧的 Delete... 按钮。将出现一个对话框,单击删除。

您也可以手动删除派生数据:

~/Library/Developer/Xcode/DerivedData/{project name + gobly-gook}

此目录包含项目的构建产品和索引。 OK 删除它是因为它只包含 Xcode 生成的项目。 Xcode 将在下次打开项目时重新生成所有内容。

【讨论】:

  • 或者您可以简单地“触摸”您的.pch 文件(或在其中添加和删除一个字符)以便重新编译它,而无需清理和重建您的所有项目(这样下一个构建速度更快)
  • 对于旧版本的 Xcode,这是修复它的唯一方法。
  • 在更改系统标头后(意外),我还必须删除 DerivedData 下的 Modules/&App 目录。
  • @AliSoftware 当你说触摸 .pch 时,这只是工作,因为它只是重新编译整个项目(可以通过重新编译来实现)的方式,因为默认情况下将 .pch 导入到所有类中,因此触摸它会使整个项目编译完毕。
  • OSX 10.10.2/Xcode 6.2。我在 NSMutableArray.h 中四处寻找一种方法,随后当我尝试构建我的项目时,我得到了那个错误。我想我一定是不小心改变了一些东西。我当前的项目不会构建,不会构建旧项目,也不会构建新项目。没有多少清洁对我有用,进入管理器并删除也不起作用。对我有用的是:1)$ cd ~/Library/Developer/Xcode/ 2)然后删除整个 DerivedData 文件夹:~/Library/Developer/Xcode$ rm -rf DerivedData
【解决方案2】:

我能够以更简单的方式修复它,只需从 Xcode 菜单栏中选择 Product > Clean,然后选择 Product > Build。

【讨论】:

  • +1。按 Cmd + Opt + Shft + K 进行了相同的“深度清理”
  • 请注意,您必须在每台出现错误的目标设备上执行清理和构建。我必须为我的模拟器为我的 iPad 这样做。
【解决方案3】:

存档时删除 DerivedData 文件夹对我不起作用。

我必须查看 Build Settings - Build Locations - Precompiled Header Cache Path 并删除该文件夹。

对我来说是:

/var/folders/_w/t0mj70hd1439tqgxff7_mtt00000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders

【讨论】:

  • 这个文件夹也对我有用。虽然我之前确实删除了 ~/Library... 文件夹。
  • 我刚刚注意到这个文件夹在构建设置中。它被称为预编译头缓存路径!
【解决方案4】:

我想我会添加一个单独的答案而不是对 Cryptognome 的答案的评论,因为当问题来自运行 xcodebuild 时,它实际上是一个不同的解决方案。像 Cryptognome 一样,我在使用命令行工具 xcodebuild 时遇到了错误。作为手动进入/var子文件夹的替代方法,我发现我可以为共享PCH设置自己的缓存,您可以通过设置环境变量SHARED_PRECOMPS_DIR来完成,例如如下

xcodebuild -target Foo -configuration Release SHARED_PRECOMPS_DIR=/tmp/foo/SharedPCH

这样,我永远不会在自动构建中遇到错误。

请注意,在上述命令中,我通常还将 OBJROOTSYMROOT 环境变量设置为也在 /tmp 中构建。最后,我收拾东西。

【讨论】:

  • 对我来说,使用xcodebuild clean build 使构建再次工作。
【解决方案5】:

xcodebuild 命令行工具有时会因此错误而失败。当我将 svn 工作区与早期版本同步时,这发生在我身上。 xcodebuild 工具将其预编译的头文件保存在 Ants 提到的文件夹中:

/var/folders/... scrambled eggs .../-Caches-/com.apple.Xcode.503/SharedPrecompiledHeaders/

您必须查看构建命令本身才能看到实际的文件夹名称(-include /var/...),但如果您为不同的架构(arm6、arm7、模拟器、例如)因此,如果您在命令行构建中遇到此问题,只需删除 /var/.../SharedPrecompiledHeaders 中的所有内容。

【讨论】:

  • 这也是我遇到的问题。我没有依赖这个默认缓存文件夹,而是将自己的缓存设置在我用于自动构建的同一个 /tmp 子文件夹中,您可以通过传递例如SHARED_PRECOMPS_DIR=/tmp/foo/SharedPrecompiledHeaders 作为xcodebuild 的参数。这样,我永远不会在自动构建中遇到错误。
【解决方案6】:

通过 iOS 模拟器删除模拟器的内容 > 重置内容和设置...并点击休息。这将删除任何现有的标头和资源的预编译实例。这对我有用

【讨论】:

    【解决方案7】:

    解决办法:

    1)产品->清洁

    2)产品->构建

    错误类型:

    一种构建错误

    原因之一:

    可能有人更改了框架文件。 当对另一个框架所依赖的框架进行更改时,有时会发生这种情况。预编译的头缓存不同步,Xcode 无法编译给定的项目。

    其中一种场景:

    可能选择了跳转到定义并在选择框架控件后进行了一些更改。

    【讨论】:

    • 果然我编辑了一个System头文件,报错信息中列出了。我能够通过 Time Machine 恢复标题,然后清理和构建,成功。
    • 这是一个非常好的解决方案,否则必须对系统中的每个项目执行上述步骤。
    【解决方案8】:

    我可以通过清理 (command+shift+K) 和重建来摆脱这个错误。

    【讨论】:

      【解决方案9】:

      我试过了,但没有用。最后我删除了 Xcode 并重新安装。现在它工作正常..

      Xcode->删除->重新安装

      这可能对某人有帮助...

      【讨论】:

        【解决方案10】:

        我在运行科尔多瓦时遇到了这个错误:cordova run ios

        fatal error: file '/Users/.../cordova/platforms/ios/CordovaLib/CordovaLib_Prefix.pch' has been modified since the precompiled header
          '/var/folders/gb/3cf6hy4x7z3d7hprls6xmd0m0000gr/C/com.apple.DeveloperTools/6.0-6A313/Xcode/SharedPrecompiledHeaders/CordovaLib_Prefix-bfgesbulnxtdepfwgniffeysypgv/CordovaLib_Prefix.pch.pch' was built
        note: please rebuild precompiled header
          '/var/folders/gb/3cf6hy4x7z3d7hprls6xmd0m0000gr/C/com.apple.DeveloperTools/6.0-6A313/Xcode/SharedPrecompiledHeaders/CordovaLib_Prefix-bfgesbulnxtdepfwgniffeysypgv/CordovaLib_Prefix.pch.pch'
        1 error generated.
        
        ** BUILD FAILED **    
        
        The following build commands failed:
            CompileC build/CordovaLib.build/Debug-iphoneos/CordovaLib.build/Objects-normal/armv7/NSDictionary+Extensions.o Classes/NSDictionary+Extensions.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
            CompileC build/CordovaLib.build/Debug-iphoneos/CordovaLib.build/Objects-normal/armv7/CDVInvokedUrlCommand.o Classes/CDVInvokedUrlCommand.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
        

        我尝试使用 clean 和 build 但不起作用,最后我删除了文件夹 '/var/folders/gb/3cf6hy4x7z3d7hprls6xmd0m0000gr/C/com.apple.DeveloperTools/6.0-6A313/Xcode' 并且可以工作! 这个提示,可能对其他人有所帮助

        【讨论】:

        • 具有类似路径的文件夹似乎是一个非常狭窄的示例。最好说“我终于从错误中删除了有问题的文件夹,并且它起作用了。”
        • 是的,你是对的,但我没有找到像我这样的其他案例,所以我认为它对其他人有用
        • 正是我的意思——如果有人从字面上理解你的答案,他们会想知道“为什么我找不到这条路?”当要摆脱的事情是“我删除了包含预编译头文件的目录树(无论它可能适合你)并且它有效。”
        【解决方案11】:

        Clean 方法对我不起作用,最终我通过重新安装 XCode 解决了这个问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-16
          • 2011-07-29
          • 2023-03-19
          • 1970-01-01
          • 2015-01-05
          相关资源
          最近更新 更多