0

我正在尝试更新我的应用程序以使用 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。

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

4

2 回答 2

0

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

于 2012-09-21T02:56:35.440 回答
0

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

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

于 2013-07-24T05:13:42.393 回答