是否有一个编译器标志,表明缺乏armv7架构

随着iPhone 5和其他armv7s设备的出现,与现有的(闭源)第三方框架(如Flurry)存在兼容性问题。

一种select是等到他们发布一个新的版本,但我希望有一个编译器标志或我可以在我的Xcode项目中使用的东西,让链接器知道不要期望从这个框架armv7s架构,并使用armv7代替。 有这样的事情吗?

加载不包含目标体系结构的框架是不可能的。

你可以做的只是运送一个armv7应用程序,直到框架被更新。 该应用程序仍然可以在iPhone 5上工作,只是不使用它提供的最新性能优化。

或者,如果你可以在没有新架构的框架下生活,你可以把它链接起来。 但是你需要检查你的代码是否在你使用框架的东西的时候加载。

在GCC中曾经有一个链接器标志, allow_sub_type_mismatches ,它可以让你在链接库中混合搭配ARM架构版本,但是它们似乎已经把Xcode的最新版本带走了。

但是,这实际上可能会以不同的方式进行攻击。 制作一个框架的副本,查看其内容,在hex编辑器中打开其中的实际代码库文件,并执行以下全部replace:

 CEFAEDFE 0C000000 09000000 

 CEFAEDFE 0C000000 0B000000 

你基本上正在做的是改变每个代码对象的头部以将其标识为ARMv7而不是ARMv7代码 – 指令集向后兼容(或者似乎是),所以即使使用这种黑客,它也应该运行良好尽pipe我不得不承认,直到我们真的有机会在iPhone 5上testing它,我们才会知道。

无论如何,一旦您修改了框架,只需将两个版本添加到您的项目中,并链接到每个架构中适当的版本。 您也可以通过使用lipo来合并修改的和原始的库来创build新的单一框架。