#g++遇害,誰是兇手? ##案發現場 使用Qt Creator編譯某個程序,忽然爆出錯誤,g++不幸遇難: ##分析 因爲使用的Qt版本比較低,內心一直想着哪天升下級,一出這個問題,第一個念頭,版本過低的Qt作的禍。因而,下載Qt的源碼包,編譯,好長時間以後,從新編譯程序,仍是這個錯誤。功夫白費了!html
面壁了一會,決定仍是仔細看錯誤描述,g++: internal error terminated (program cc1plus),搜索一下,發現做爲g++的bug報告過,但提交人後續沒有提交詳細的報告,超過三個月,被關掉了。 繼續查,眼前一亮,不少案例都指向oom killer。仔細看了一些案例,嗯,不錯就是它了。 ##解決 既然是oom killer,那確定是內存不足了。因爲是虛擬機運行,因此條件有限,想辦法把能禁掉的程序都關了,結果仍是那樣。看來內存總量不行啊,因而想到swap分區,free查看了一下,沒有swap分區啊。當時爲了方便省事,如今要償還了。android
因而,手動添加了swap分區,劃了256M。方法以下。 劃分swap分區:.net
dd if=/dev/zero of=/var/swap bs=1024 count=262144 mkswap /var/swap
設置成系統啓動掛載: 在/etc/fstab中加上:/var/swap swap swap defaults 0 0 重啓,從新編譯OK。 ##參考code