我有一个为iPhone配置的项目,可以为armv6和armv7架构编译。我需要从armv6架构的编译中排除一些代码,因为它会导致设备上的运行时崩溃(坏的指令异常)。
是否定义了armv6/armv7编译路径(如"_DEBUG")?
发布于 2010-12-10 10:03:46
首先,你不需要阻止它们被编译,你需要阻止它们被执行。毕竟,崩溃发生在运行时,而不是编译时。
也就是说,要做到这一点,最简单的方法是有两个代码路径,并根据架构编译适当的部分:
#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
发布于 2010-12-10 04:02:52
一种解决方法可能是将所有仅适用于ARMv6的源代码收集到一个子项目中,并将其编译为静态库,然后将该库链接到fat应用程序。
人们还可以在Xcode中为每个源文件指定额外的构建标志,但我不熟悉其语法,也不熟悉恢复已经发出的标志(例如,在armv7下指定编译的标志)所需的其他内容。
https://stackoverflow.com/questions/4397894
复制相似问题