2010-09-28 98 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 ++中。

我會嘗試分別編譯每個源文件,以檢查哪部分源代碼會觸發錯誤。