构build错误 – 在文件中缺less所需的体系结构i386

构build我的iPhone应用程序时出现此错误:

ld:警告:在/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library/Frameworks/UIKit.framework/UIKit,在文件中缺less必需的体系结构i386

对于我的应用程序中的所有框架,情况都是一样的。 这很奇怪,因为这没有发生。

当你向你的项目添加一个框架并且无意中将框架复制到你的项目目录中时,会发生这种情况。

解决的办法是检查你的项目目录(你在哪里存储你的项目在磁盘上)的任何iPhone SDK * .Framework文件并删除它们。

项目将在此后build成。

我有这个相同的问题,解决scheme是一个简单的修复。 备份,然后在TextMate或TextEdit中打开project.pbxproj(位于项目文件包内)并search标题为“/ * Begin XCBuildConfiguration section * /”的部分。 找一个名为FRAMEWORK_SEARCH_PATHS的键,并删除它的内容(每个构buildconfiguration一次,所以我把它在两个地方删除)。 这里是我删除的一个例子:

FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library/Frameworks\"",); 

我的项目现在为iPhone设备和iPhoneSimulator构build。

这里发生的事情是,Xcode神秘地添加了一个指向特定的iPhone设备SDK的“框架searchpath”条目。 例如,我最近被设定为:

 $(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks 

这导致编译器find不正确体系结构的框架。 在目标的构build设置中删除“框架searchpath”键下的任何值都可以解决问题。

我只是想提到,在XCode中,如果你去“编辑项目设置”,并find“searchpath”有一个“框架searchpath”字段。 更新这应该解决问题,而不必破解项目文件!

干杯!

杰西

检查在添加框架时是否将框架复制到项目中。 如果您复制它,它不能find原始path。 解决这个问题。 从您的项目的框架文件夹中删除AVFoundation框架,然后再次添加它,但是这次请确保您没有标记复制检查。

这为我修好了!

我以不同的方式修复它。之所以我得到这个错误,是因为我在我的项目中添加了两次security.framework。我无法看到Xcode中的安全框架,我在finder中打开项目,发现这个框架我删除了,问题解决了。

尽pipe可能删除了某些东西,但是我的经验是,项目文件中有些东西被搞砸了。 我还没有确定这个“东西”是什么。 当SDK安装好的时候,我遇到过类似的问题。 有几个选项。

首先,将所有文件添加到一个新项目。 这似乎通常工作。 不过,有一种痛苦。

其次,您可以右键单击XCode / Get Info / Build / Library Search Paths中的项目。 添加类似于/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/lib的新path。 为每个版本(2.2.1等)和平台(模拟器或iPhoneOS)添加适当版本的string。 如果框架是您的问题,请为框架searchpath执行类似的操作。

第三,这是更多的工作,但更可靠,是从MyProject.xcodeproj(Textmate是很好的)打开project.pbxproj。 查找“/ *开始XCBuildConfiguration部分* /”,然后“LIBRARY_SEARCH_PATHS”和“FRAMEWORK_SEARCH_PATHS”。 根据需要添加或修改path,并保存文件。

无论如何,这个屁股很痛苦,我想确定一下原因,因为我已经发生过几次了。 项目build设很好,然后就这么做,拒绝这样做,似乎没有什么理由。

“编辑项目设置”并find“searchpath”有一个“框架searchpath”字段。 删除所有!!

如果您的应用程序打算在设备上运行,请确保您没有尝试在模拟器上运行它。 听起来很明显,但无论如何检查。

它也发生在我身上。 感谢伟大的合作伙伴,我们find了答案。 您的Xcode可能指向模拟器..改为它的IOS设备,而不是..build立后光滑….

从terminal运行框架上的文件命令:

 file /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit 

你应该得到一个消息,告诉你UIKit二进制文件兼容哪个体系结构。 如果你没有看到“i386”的列表,那么你已经设法删除了i386版本的UIKit,这将意味着你不能为模拟器build立。要解决这个问题,你必须重新安装SDK。

如果你还有其他的错误,希望能帮助你找出实际的问题。

我只是想让你知道,在我的情况下,我遇到了同样的问题,我意识到我有一个旧的Xcode文件夹名为Xcode3.1.3我只是重命名它,因为它是一个旧版本,并为我做了魔术。

检查您的目标设置中的库searchpath。 有时候愚蠢的图书馆会进入,这会给你一个类似的错误。

您可以删除本节中的所有条目。

我刚刚经历了一些稍微不同的东西,因为我在自己的库(WM_GSRecognizerLib)上工作,但是错误是一样的。

发生什么事情:由于一些更新,针对lib包含(.a)的path是从“Debug-iphoneos”文件夹(它生成的地方)。 通用iOS设备编译工作正常,但不是模拟器,抱怨缺lessi386架构。

我为这个问题做了什么,还包括来自“Debug-iphonesimulator”文件夹的二进制文件。

它可以帮助解决这个问题,因为解释是这样的:设备需要arm64 / armv7 / armv7s的二进制文件,而模拟器需要i386。

我也得到了同样的错误,我使用xcode版本4.0.2所以我所做的是select了xcode项目文件,并从他们我select目标选项,他们我可以看到我的项目的应用程序,所以我点击它,并去build设设置选项。

他们在search选项我键入框架searchpath ,并删除所有的设置,然后点击构buildbutton,这对我工作得很好,

感谢致敬