首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止代码块在ARMv6上编译为胖二进制文件?

如何防止代码块在ARMv6上编译为胖二进制文件?
EN

Stack Overflow用户
提问于 2010-12-09 19:54:00
回答 2查看 765关注 0票数 1

我有一个为iPhone配置的项目,可以为armv6和armv7架构编译。我需要从armv6架构的编译中排除一些代码,因为它会导致设备上的运行时崩溃(坏的指令异常)。

是否定义了armv6/armv7编译路径(如"_DEBUG")?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-10 10:03:46

首先,你不需要阻止它们被编译,你需要阻止它们被执行。毕竟,崩溃发生在运行时,而不是编译时。

也就是说,要做到这一点,最简单的方法是有两个代码路径,并根据架构编译适当的部分:

代码语言:javascript
运行
复制
#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
EN

Stack Overflow用户

发布于 2010-12-10 04:02:52

一种解决方法可能是将所有仅适用于ARMv6的源代码收集到一个子项目中,并将其编译为静态库,然后将该库链接到fat应用程序。

人们还可以在Xcode中为每个源文件指定额外的构建标志,但我不熟悉其语法,也不熟悉恢复已经发出的标志(例如,在armv7下指定编译的标志)所需的其他内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4397894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档