Xcode 4.1致命错误:自从构建预编译头以来,已修改stdlib


73

使用以下方法构建iPhone应用程序:

  • Xcode 4.1
  • 基本SDK iOS 4.3
  • 苹果LLVM编译器2.1

我已经开始出现以下错误:

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

我试过重新安装Xcode和OS X-没运气。是什么原因造成的?


在这里查看我的答案:链接 ,希望对您有所帮助:)。
martinmose14年

Answers:


152

首先尝试通过Product-> Clean菜单(从XCode 4.6.2开始)进行全新构建。

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

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

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

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

该目录包含该项目的内置产品和索引。这是OK将其删除,因为它仅包含由Xcode中产生的项目。Xcode将在下次打开项目时重新生成所有内容。


24
或者,您也可以简单地“触摸”您的.pch文件(或在其中添加和删除字符),以便重新编译该文件,而无需清理和重建所有项目(这样,下一次构建会更快)
AliSoftware

对于旧版本的Xcode,这是修复它的唯一方法。
logancautrell

1
更改系统标头后(偶然),我还必须删除DerivedData下的Modules /&App dir。
VaporwareWolf

@AliSoftware,当您说触摸.pch时,之所以起作用,是因为这是重新编译整个项目的方式(可以通过重新编译来实现),因为默认情况下.pch被导入到所有类,因此触摸它会使整个项目全部编译过度。
rptwsthi 2014年

1
OSX 10.10.2 / Xcode 6.2。我在NSMutableArray.h中寻找一种方法,随后当我尝试构建项目时,出现了该错误。我想我一定是偶然改变了一些东西。我当前的项目无法构建,旧项目无法构建,新项目也无法构建。清洁工作对我没有任何帮助,进入管理器并删除也不起作用。对我$ cd ~/Library/Developer/Xcode/有用的是:1)2)然后删除整个DerivedData文件夹:~/Library/Developer/Xcode$ rm -rf DerivedData
7stud,2015年

76

通过选择Xcode菜单栏中的Product> Clean,然后选择Product> Build,我可以用一种更容易的方式修复它。


8
+1。通过按Cmd + Opt +
Shft

请注意,您将必须在每个错误的目标设备上执行清理和构建。我必须为我的模拟器iPad做它。
新手

37

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

我必须查看“构建设置”-“构建位置”-“预编译的头缓存路径”并删除该文件夹。

对我来说是:

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

这个文件夹也对我有用。尽管我之前确实删除过〜/ Library ...文件夹。
futureshocked 2011年

我刚刚注意到该文件夹​​在构建设置中。这就是预编译头缓存路径!
蚂蚁2015年

16

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

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

这样,我就不会在自动构建中出错。

注意,在上述命令中,我通常还会将OBJROOTand SYMROOTenv var设置为也在/ tmp中构建。最后,我清理了所有东西。


对我来说,使用xcodebuild clean build使构建再次起作用。
ThomasW

4

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

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

您必须查看build命令本身以查看实际的文件夹名称(-include / var / ...),但是如果要针对不同的体系结构(例如arm6,arm7,模拟器)进行构建,则可能会使用多个文件夹名称。如果您在使用命令行构建时遇到此问题,只需删除/var/.../SharedPrecompiledHeaders中的所有内容。


1
那也是我的问题。我没有依赖此默认缓存文件夹,而是在用于自动构建的同一/ tmp子文件夹中设置了自己的缓存,您可以通过将例如SHARED_PRECOMPS_DIR=/tmp/foo/SharedPrecompiledHeaders作为参数传递给来使用该子文件夹xcodebuild。这样,我就不会在自动构建中出错。
查尔斯

3

通过iOS Simulator>重置内容和设置...删除Simulator的内容,然后单击Rest。这将删除头和资源的任何现有的预编译实例。这对我有用


3

解:

1)产品->清洁

2)产品->构建

错误类型:

一种构建错误

原因之一:

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

场景之一:

一个人可能已经选择了“跳转到定义”,并在选择了框架控件之后进行了一些更改。


1
果然,我编辑了错误消息中列出的系统头文件。我能够让Time Machine恢复标头,然后成功进行清理和构建。
greg

这确实是一个很好的解决方案,否则将不得不对系统中的每个项目执行上述步骤。
Durai Amuthan.H 2013年

1

我仅通过清理(command + shift + K)并重建就可以摆脱此错误。


0

我首先尝试了但没有用。最后,我删除了Xcode,然后重新安装。现在工作正常。

Xcode->删除->重新安装

这可能会帮助一些人...


0

我在跑步时在cordova上遇到此错误: 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

我尝试进行清理和构建,但无法正常工作,最后我删除了文件夹“ /var/folders/gb/3cf6hy4x7z3d7hprls6xmd0m0000gr/C/com.apple.DeveloperTools/6.0-6A313/Xcode”,即可正常工作!这个提示,可能对别人有帮助


具有这样路径的文件夹似乎是一个非常狭窄的示例。最好说“我终于从错误中删除了有问题的文件夹,并且可以正常工作”。
Gutblender

是的,您是对的,但我没有发现像我这样的其他案件,因此我认为这对其他人可能有用
Crystian 2014年

正是我的意思-如果有人按字面意思回答,他们会怀疑“我为什么找不到这条路?” 当需要解决的事情是“我删除了包含预编译头文件的目录树(不管是什么,对您来说)并且它起作用了”。
Gutblender14年

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.