【问题标题】:iPhone: Runtime dyld_fatal_error upon updating app for armv7siPhone:为 armv7s 更新应用程序时出现运行时 dyld_fatal_error
【发布时间】:2012-09-19 23:50:05
【问题描述】:

我正在尝试更新我的应用程序以使用 iPhone5,这需要确保它针对 armv7 和 armv7s 架构进行编译。我已经更新了我的项目中的构建设置,并使用这些设置重新编译了所有静态链接的库。所以它现在编译和链接成功。

但是,在运行 iOS6 的设备 (iPad) 上运行它(当然只支持 armv7 架构)时,我会立即崩溃,输出如下:

dyld: vm_protect(0x00001000, 0x003BB000, false, 0x07) failed, result=2 for segment __TEXT in /var/mobile/Applications/....[name/location of my app]....

我也在跟踪窗口中得到了这个:

dyld`dyld_fatal_error:
0x2fe400c4:  trap   
0x2fe400c8:  nop  

我没有 iPhone5 来测试二进制文件的 armv7s 部分。当然,在发布到野外之前,我会在真实设备上对其进行测试,但同时我希望能够使用我当前运行 iOS6 的 armv7 iPad/iPhone 继续工作。我正在使用最近发布的 Xcode 4.5。

那么,有人知道发生了什么,或者可能有同样的问题吗?

【问题讨论】:

    标签: iphone ipad ios6 armv7


    【解决方案1】:

    重新下载并随后重新编译我包含的其中一个库解决了该问题。显然,在添加 armv7s 架构时,我在库的构建配置中更改了错误的内容,或者库项目的某些部分以某种方式损坏。 (受影响的库是 FTGLES2 Xcode 项目中包含的 Freetype2 库。)

    【讨论】:

      【解决方案2】:

      您可能在静态重新编译库时不小心禁用了动态链接(导致编译时将 -static 标志传递给 clang)。

      通过在 LLVM 编译器语言设置中将“启用与共享库的链接”切换为“是”(默认值)进行修复。 (这会从项目文件中删除 GCC_LINK_WITH_DYNAMIC_LIBRARIES = NO)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-02
        • 2011-10-01
        • 1970-01-01
        • 2011-01-30
        • 2011-08-27
        • 2019-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多