【问题标题】:Internal compiler error: Bus error with LLVM GCC 4.2 compiler内部编译器错误:LLVM GCC 4.2 编译器的总线错误
【发布时间】:2011-06-06 09:27:34
【问题描述】:

当我尝试使用默认编译器设置在设备上测试我的应用程序时,LLVM GCC 4.2,它给了我“Internal compiler error: Bus error”,但它与 GCC 4.2LLVM 编译器 2.0 一起工作正常。

此错误的可能原因/原因是什么?是否可以使用 GCC 4.2 分发您的应用程序?

【问题讨论】:

  • 有什么理由不使用 clang?
  • @Let_Me_Be - 抱歉,关于这个问题,我对 clang 一无所知。
  • @itsaboutcode 嗯,clang 是一个编译器前端,它使用 LLVM 作为后端。这是一个比 LLVM GCC 更干净的组合。尝试 clang 看看问题是否仍然存在。
  • @Let_Me_Be - 在 iphone 中,我只有 3 个选项 - LLVM GCC 4.2、GCC 4.2 和 LLVM 编译器 2.0。
  • 我也遇到了同样的问题,实际上你的帖子解决了它——切换到 GCC 4.2 就成功了。我不知道为什么它一开始就失败了(LLVM 2.0 不起作用,因为我使用的 TVOutManager 库会引发警告)。我还想补充一点,无论编译器设置如何,我的代码也可以在模拟器中正常编译。

标签: gcc ios4 xcode4 compiler-errors llvm-gcc


【解决方案1】:

“总线错误”通常意味着您的应用程序正在尝试执行未对齐的内存访问,默认情况下是不允许的。

您可以尝试告诉gcc 仅生成对齐的内存访问或在操作系统内核中设置未对齐的内存访问处理(不确定在 iOS 中是否可行):

echo 2 > /proc/cpu/alignment

【讨论】:

  • 这在 Linux 中是可行的,但在 OSX / iOS 中是不可行的。这些系统上没有 /proc 树。而且gcc 不再是iOS 上的默认编译器,而是llvm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多