g++: internal compiler error: Killed (program cc1plus) 解決辦法
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report
問題原因是因爲內存不足 使用增加交換分區來解決:
無論是否有交換分區都執行相同的步驟
查看當前的空間量
可以發現現在的交換空間(swap)是2G
1.創建一個swap文件
mkdir /home/roo/swapfile //創建文件夾,命名爲swapfile
cd /home/roo/swapfile //打開創建好的swapfile
sudo dd if=/dev/zero of=swap bs=64M count=256 //增加64M * 256 =16G 的交換空間
dd 命令解釋(以下加粗的是本次使用到的參數):
dd:用指定大小的塊拷貝一個文件,並在拷貝的同時進行指定的轉換。
注意:指定數字的地方若以下列字符結尾,則乘以相應的數字:b=512;c=1;k=1024;w=2
參數註釋:
-
if=文件名:輸入文件名,缺省爲標準輸入。即指定源文件。< if=input file >
-
of=文件名:輸出文件名,缺省爲標準輸出。即指定目的文件。< of=output file >
-
ibs=bytes:一次讀入bytes個字節,即指定一個塊大小爲bytes個字節。
obs=bytes:一次輸出bytes個字節,即指定一個塊大小爲bytes個字節。
bs=bytes:同時設置讀入/輸出的塊大小爲bytes個字節。 -
cbs=bytes:一次轉換bytes個字節,即指定轉換緩衝區大小。
-
skip=blocks:從輸入文件開頭跳過blocks個塊後再開始複製。
-
seek=blocks:從輸出文件開頭跳過blocks個塊後再開始複製。
注意:通常只用當輸出文件是磁盤或磁帶時纔有效,即備份到磁盤或磁帶時纔有效。 -
count=blocks:僅拷貝blocks個塊,塊大小等於ibs指定的字節數。
-
conv=conversion:用指定的參數轉換文件。
ascii:轉換ebcdic爲ascii
ebcdic:轉換ascii爲ebcdic
ibm:轉換ascii爲alternate ebcdic
block:把每一行轉換爲長度爲cbs,不足部分用空格填充
unblock:使每一行的長度都爲cbs,不足部分用空格填充
lcase:把大寫字符轉換爲小寫字符
ucase:把小寫字符轉換爲大寫字符
swab:交換輸入的每對字節
noerror:出錯時不停止
notrunc:不截短輸出文件
sync:將每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊。
2. 轉換swap文件
sudo mkswap -f swap
suggest(建議)不用管,沒報錯就行
三 激活swap文件
sudo swapon swap
卸載的話使用 swapoff
sudo swapoff swap
交換空間從2G變成18G,增加了
四 永久生效
雖然交換空間到此已經擴展成功了,但是電腦重啓的話,還是會恢復默認的swap大小,如果僅僅是暫時增加交換空間,不需要進行永久生效的過程。
如果要一直使用這個swap,要把它寫入/etc/fstab文件中.
/home/lichunlin/swapfile/swap none swap defaults 0 0
【注】lichunlin是用戶的名字,需要替換成自己的用戶名
重啓後即可生效
使用free -m即可查看