我正在尝试更新我的应用程序以使用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。
那么,任何人都知道发生了什么,或者可能有同样的问题?
答案 0 :(得分:0)
当您静态重新编译库时,可能会意外禁用动态链接(导致在编译时将-static标志传递给clang)。
通过在LLVM编译器语言设置中将“启用与共享库的链接”切换为“是”(默认值)进行修复。 (这会从项目文件中删除GCC_LINK_WITH_DYNAMIC_LIBRARIES = NO。)