LLVM GCC 4.2编译器出现总线错误的内部编译器错误。

3

当我尝试使用默认编译器设置LLVM GCC 4.2在设备上测试我的应用程序时,出现了“内部编译器错误:总线错误”,但是它可以正常工作在GCC 4.2LLVM编译器2.0

这个错误的可能原因是什么?是否可以使用GCC 4.2来分发你的应用程序?


你没有使用clang的原因是什么? - Šimon Tóth
@itsaboutcode 嗯,clang是一个编译器前端,它使用LLVM作为后端。这比LLVM GCC的组合要干净得多。尝试使用clang并查看问题是否仍然存在。 - Šimon Tóth
@itsaboutcode 哦,好的,那么我猜LLVM编译器2.0就是clang,因为LLVM本身不能编译C,它需要一个前端。好的,那么使用LLVM编译器2.0选项有什么问题吗? - Šimon Tóth
@Let_Me_Be - 在这种情况下我没有收到任何错误。但问题是,为什么默认选项会给我错误? - itsaboutcode
2
我也遇到了同样的问题,实际上你的帖子解决了它——切换到GCC 4.2就行了。我不知道为什么一开始会失败(LLVM 2.0无法工作,因为我正在使用TVOutManager库,它会抛出一个警告)。我还想补充一点,我的代码在模拟器中编译也很好,无论编译器设置如何。 - Mirkules
显示剩余3条评论
1个回答

0
"

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

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

"
echo 2 > /proc/cpu/alignment

这在Linux中是可行的,但在OSX / iOS中不行。这些系统上没有/proc目录树。并且,在iOS上,默认编译器不再是gcc,而是llvm - Cyrille

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接