我有一个配置为armv6和armv7架构编译的iPhone项目。我需要从编译armv6架构中排除一些代码,因为它会导致设备运行时崩溃(错误的指令异常)。
是否有armv6 / armv7编译路径的定义(例如“_DEBUG”)?
答案 0 :(得分:1)
首先,您不需要阻止它们编译,您需要阻止它们被执行。毕竟,崩溃是在运行时,而不是编译时间。
也就是说,最简单的方法是使用两个代码路径,并根据体系结构编译相应的部分:
#if defined _ARM_ARCH_7
// your armv7 implementation goes here
#elif defined _ARM_ARCH_6
// your armv6 implementation goes here
#elif defined __i386__
// a simulator implementation could go here, if you had one
#else
#error Unknown Architecture!
#endif
答案 1 :(得分:0)
一种解决方法可能是将所有仅限armv6的源收集到子项目中,并将它们编译为静态库,然后将该库链接到胖应用程序。
我们也可以在Xcode中为每个源文件指定其他构建标志,但是我不熟悉语法或者还需要什么来基本上还原已经发出的标志(例如,指定在armv7下编译的标志。)