【问题标题】:Compiling framework with armv7 and armv7s使用 armv7 和 armv7s 编译框架
【发布时间】:2013-10-03 13:00:15
【问题描述】:

我正在尝试在 xcode 5 上构建一个静态库,并且我正在聚合用于 iphone 模拟器和 iphone 设备的库以创建一个框架。但是,最后我得到了错误 “没有要编译的架构(ARCHS=armv7,VALID_ARCHS=i386 x86_64)” 在运行框架的运行脚本时。

我正在尝试为 armv7 和 armv7s 编译它。

请帮我解决这个问题。

【问题讨论】:

  • 除非你真的使用armv7s的新指令,否则你真的根本不需要它。它所做的只是在商店中将您标记为“针对 iphone 5 优化”。它确实会增加二进制文件的大小。

标签: iphone ios ios-frameworks


【解决方案1】:

终于解决了问题。就我而言,我的静态库项目有一些依赖项目。在依赖项目设置中,ARCH 是 armv7。我把它做成了“标准架构(armv7,armv7s)”,它编译成功。对于我的静态库项目,设置如下:

架构:标准架构(armv7、armv7s)

基础 SDK:最新 iOS (iOS 7.0)

仅构建活动架构:否

支持平台:iphonesimulator iphoneos

有效架构:arm64 armv7 armv7s i386

【讨论】:

    【解决方案2】:

    What's the difference between "Architectures" and "Valid Architectures" in Xcode Build Settings?

    简而言之,XCode 使用 ARCHS 和 VALID_ARCHS 之间的交集,在你的情况下它是空的,因为 2 没有共同的架构(因此你得到的错误) 将 armv7 添加到 VALID_ARCHS 可能会解决问题。

    【讨论】:

    • 在我的 xcode 设置中,我有 ARCHS (armv7, armv7s) 而 VALID_ARCHS 是 (armv7, armv7s, arm64, x86_64, i386)。如果我正在为模拟器构建,那么它工作正常但显示设备错误。
    • 您是否将“仅构建活动架构”设置为否?您是否在 XCode 构建目录中找到了生成的二进制文件? (Organizer->Projects,找到您的项目,然后单击其“派生数据”文件夹旁边的链接箭头,找到 Build>Products 文件夹,然后查看您的库的二进制文件在里面)
    • “仅构建活动架构”设置为 NO。我检查了它在选择模拟器时创建的二进制文件。它正在按预期创建。但是在为设备构建时显示错误。在构建设置中,ARCHS 是“标准架构(armv7,armv7s)”。我不知道为什么它只显示设备错误。
    • 我也不明白为什么,抱歉。唯一奇怪的是,您在问题中为 ARCHS 和 VALID_ARCHS 提供了一个值(VALID_ARCHS 中没有 armv7 值) - 正如您在错误中报告的那样 - 在您的评论中您说您确实在 VALID_ARCHS 中放置了更完整的值列表(包括armv7)。您是否在同一个工作区中有多个项目?如果是这样,您是否正在编辑良好的构建设置?
    • 是的,我的工作区中有多个项目。最初,该项目甚至没有为模拟器编译。当时,我的设置是 ARCHS 'Standard architectures (armv7, armv7s)' 和 VALID_ARCHS (armv7, armv7s, arm64)。在收到错误“No architectures to compile for (ARCHS=armv7, VALID_ARCHS=i386 x86_64)”后,我已将 x86_64 和 i386 添加到 VALID_ARCHS。然后它声明为模拟器编译,但为设备编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多