iphone - 无法将 iOS/iPhone 应用程序构建为 i386 以外的任何应用程序

标签 iphone ios xcode compilation

我对 iOS/iPhone/XCode 世界完全陌生,所以如果你猜测是在相当复杂的事情和每个人都应该知道的简单事情之间,我会选择简单的答案。 :-)

好的,所以我继承了我们外包给另一家公司的 iPhone 项目。我现在唯一的目标是能够构建该死的东西。我设置了 XCode 4.2 并安装了正确的 SDK。我加载了项目,到目前为止一切似乎都很好。但是,当我构建时,我认为是构建的链接阶段出现错误。我不完全确定,因为在构建时状态变化很快。我得到的错误如下:

Error from XCode build

从我在网上找到的内容来看,我使用的库之一似乎不是为 i386 平台编译的。首先,这对我来说没有意义,因为我正在使用的库(这些错误来自哪里)目前作为子项目包含并生成 .a 我认为是独立于拱门的文件(我在这里错了吗??)。此外,我在项目中找不到任何指示 XCode 构建为 i386 架构的地方。这是我到目前为止所做的:

  • 确保出现这些错误的文件包含在构建阶段选项卡的“编译源”部分(.m 文件)
  • 将我的架构设置为 armv6 armv7 并设置 仅构建主动架构 没有。 (见下图)

  • 主项目配置
    main project build configuration

    子项目配置
    sub project config

    当我使用发布配置构建事件时,我仍然收到此错误,我不知道为什么。我在构建配置中看到的所有内容似乎都表明我应该在 arm 架构中构建所有内容。

    最佳答案

    您收到错误是因为您弄乱了架构设置。您不应该针对 ARM 代码修复这些问题,但也应该允许 i386。

    现在,您的多个(子)项目之一仅构建 ARM 代码,一旦您尝试构建模拟器版本,就会导致链接器错误。发生这种情况是因为您的架构设置不应该是。

    请注意您对 的设置任何 iOS SDK ,那是不正确的,因为它只构建 ARM 代码。选择特定设置(单击)后,使用键盘上的退格键完全删除这些设置。

    这就是它应该的样子:
    enter image description here
    $(ARCHS_STANDARD_32_BIT)解析为 ARMV7构 build 备特定代码和 i386 时在构建模拟器特定代码时。包括ARMV6仅当您计划将结果提供给较旧的 iOS 设备(iPhone 3G 及以下)时,才需要按照我的屏幕截图的代码。

    一旦这些设置为 活跃于所有(子)项目 ,一切都应该顺利进行。

    要从项目中创建通用库,如果您计划将静态库分发给其他开发人员,请使用 LIPO。 .

    例子:

    lipo input_library_1.a input_library_2.a -create -ouput output_library.a
    

    假设 input_library_1 是 i386特定(模拟器)和 input_library_2 是 ARM特定的(设备),这会将它们加入一个可用于模拟器和设备的通用版本。

    关于iphone - 无法将 iOS/iPhone 应用程序构建为 i386 以外的任何应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10208407/

    相关文章:

    iphone - 如何从AudioQueueBufferRef->mAudioData读取数据

    iphone - iPad 上的自定义 UIView 动画过渡

    ios - 照片滤镜使 iPod 上的应用程序崩溃

    c++ - 哪种音频文件格式最容易操作?

    ios - Swift - 具有不同方法名称的多个扩展但仍然不起作用

    iphone - 将 UIWebView 中的图像放入 UIImageView 中

    ios - 无法将 UTC 时间转换为本地时间?

    ios - Swift - 将 UIPageViewController 之类的东西放在屏幕顶部

    ios - UITableView 屏幕图像下载延迟加载

    iphone - 为什么 Xcode 引用不存在的文件?