2010-09-28 106 views
2

我试图编译Linux的C++程序,在shellC++:调试总线错误

$ g++ -Wall *.cpp -o prog 

,由于某种原因它不断给我一个奇怪的错误使用命令:

g++: Internal error: Bus error (program cc1plus) Please submit a full bug report. See for instructions.

我搜查了网络的这个总线错误,它说它必须处理有关访问非法内存的内容。

有人可以澄清一些事情对我来说更多一点吗?

+0

这是否只发生在这些特定的* .cpp文件上,或者是否在您尝试编译某些内容时发生?如果是后者,那么在你的Linux安装中可能会出错,否则你会发现一个g ++的bug。 – Frank 2010-09-28 15:51:34

+0

另外,你使用什么g ++版本(参见'g ++ -v')?并且它是否也与其他版本发生? – Frank 2010-09-28 15:52:33

回答

6

此错误消息告诉你,g ++编译器本身存在一个错误。

尝试通过移除源文件的碎片来缩小它,直到问题消失。你并没有试图修复你的程序,你只是想找到打破编译器的部分。一旦你找到它,你可以提供更好的错误描述,或者你可以改变你的代码来解决它。

或者只是下载最新版本的g ++编译器,并希望它已经修复。

+0

如果反复尝试重新编译(没有对源代码进行任何**更改)最终会导致编译器成功,该怎么办? – 2016-05-20 16:11:03

+0

@KyleStrand,这当然是可能的,这强烈地表明编译器有一个未初始化的变量错误。我的建议仍然是一样的,虽然它使得难以分辨你自己的代码修改是否有所作为。 – 2016-05-20 16:14:12

+0

嗯。这很奇怪,因为我正在使用5.1,这是*最近*最近....并且它也一直在多个其他机器上正确构建。我有点怀疑自己在机器本身的文件系统上不小心做了些奇怪的事情,或者什么。 – 2016-05-20 16:20:49

3

你的问题不在你的代码中,是编译器(g ++)崩溃并产生总线错误,它可能是你有这样的编译器的过时版本,需要更新,或者你很幸运,发现一个真正的bug在g ++中。

我会尝试分别编译每个源文件,以检查哪部分源代码会触发错误。