分支超出范围编译错误

时间:2011-08-14 19:47:26

标签: iphone compiler-errors

编译到设备时出现以下编译错误。 (编译模拟器时一切正常)

  

的/ var /文件夹/ 3B / 3BAjD + ANHHmfh-eIWrtXDU +++ TI / -Tmp- / CC-hojnUD.s:1784380:分支   超出范围   /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:branch   超出范围   /var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU+++TI/-Tmp-/cc-hojnUD.s:1784356:branch   超出范围

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

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

由于此错误,我无法让我的应用程序为iPhone编译。

你知道我能做些什么吗?

PS。我使用Xcode 4.2和Apple LLVM 3.0(使用ARM,因此我无法更改编译器)

非常感谢!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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