2011-08-14 98 views
2

编译到设备时出现以下编译错误。 (当编译到模拟器一切都OK了)分支超出范围编译错误

/var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU+++TI/-Tmp-/cc-hojnUD.s:1784380:branch 超出范围 /var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU++TI/-Tmp-/cc-hojnUD.s:1784372:branch 超出范围 /var/folders/3B/3BAjD + ANHHmfh-eIWrtXDU +++ TI/-Tmp-/cc-hojnUD.s:1784364:分支 超出范围 /var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU+++/-/-Tmp-/cc-hojnUD.s:1784356:branch 超出范围

In vario我读了一些关于关闭“拇指”的地方。我不知道这是否能解决这个问题,因为我无法在任何地方找到这个编译选项。

我有一些非常大的初始化文件(超过50K行)除了定义NSMutuable数组和类似的Stuf外别无其他。

因为这个错误,我无法再让我的应用程序为iPhone编译了。

你知道我能做些什么吗?

ps。我使用Xcode 4.2和Apple LLVM 3.0(使用ARM,所以我无法更改编译器)

非常感谢!

+0

你的init文件是一个巨大的函数吗?如果是这样,它可能有助于将功能分解成更小的部分,并有一个主功能按顺序调用这些部分。 –

+0

谢谢,这绝对有帮助。现在我可以编译到iPhone。然而,运行仪器与构建配置文件仍然挂起 - 我为此向苹果提交了一个错误报告。如果你可以把你的评论作为一个评论,我会很高兴地标记它 – user387184

回答

0

(已从评论中移除)。你的init文件是一个巨大的功能吗?如果是这样,它可能有助于将功能分解成更小的部分,并有一个主功能按顺序调用这些部分。

0

这是一个已知的链接器错误(rdar:// 16186742)。问题在于armv7编译器,当它需要合成分支岛跳跃超过16 MB时,跳跃碰巧是,正好是 16 MB。解决方法是重新安排项目构建阶段中的源文件和/或Link Binary with Libraries部分中的库。重新安排一些这个问题应该消失。