【问题标题】:branch out of range compile error分支超出范围编译错误
【发布时间】:2014-04-18 10:00:17
【问题描述】:

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

/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:branch 超出范围 /var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU+++TI/-Tmp-/cc-hojnUD.s:1784356:branch 超出范围

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

我有一些相当大的 init 文件(超过 50k 行)除了定义 NSMutuable 数组和类似的东西之外什么也没做。

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

你知道我能做些什么吗?

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

非常感谢!

【问题讨论】:

  • 你的初始化文件是一个巨大的函数吗?如果是这样,将函数分解成更小的部分并让主函数按顺序调用这些部分可能会有所帮助。
  • 谢谢,这绝对有帮助。现在我可以编译到 iPhone。但是,使用 Build for Profile 运行 Instruments 仍然挂起 - 我为此向 Apple 提交了错误报告。如果您可以将您的评论作为答案,我将很高兴标记它

标签: iphone compiler-errors


【解决方案1】:

(移自评论)。 你的 init 文件是一个巨大的函数吗?如果是这样,将函数分解成更小的部分并让主函数按顺序调用这些部分可能会有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2011-01-29
      相关资源
      最近更新 更多