ubuntu (烏班圖)g++: internal compiler error: Killed (program cc1plus) 解決辦法

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,增加了64M×256=16G64M × 256 = 16G

四 永久生效

雖然交換空間到此已經擴展成功了,但是電腦重啓的話,還是會恢復默認的swap大小,如果僅僅是暫時增加交換空間,不需要進行永久生效的過程。
如果要一直使用這個swap,要把它寫入/etc/fstab文件中.

/home/lichunlin/swapfile/swap none swap defaults 0 0

【注】lichunlin是用戶的名字,需要替換成自己的用戶名

重啓後即可生效

使用free -m即可查看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章