在給一個vps安裝php擴充套件的時候,進行make編譯時候報錯,報錯資訊:cc: Internal error: Killed (program cc1),感覺莫名其妙。google了一下,發現是記憶體太小的問題(太窮了,買不起記憶體大的vps),網上的解決方案大致兩種,我測試了下有效,特地寫出來,完善一下解決方案。
方法1:增加交換區(虛擬記憶體)
該方法為通用方法, 在其他程式編譯出現類似錯誤的時候也可以使用,不僅僅針對PHP擴充套件出錯。
命令如下:
sudo mkdir -p /var/cache/ sudo dd if=/dev/zero of=/var/cache/swap0 bs=2M count=1024 sudo mkswap /var/cache/swap0 sudo swapon /var/cache/swap0
解釋一下上面的命令
首先虛擬記憶體就是硬碟上的一個檔案,所以需要先建立該檔案的檔案目錄
dd命令:用指定大小的塊複製一個檔案,並在複製的同時進行指定的轉換。
可以理解為在建立虛擬記憶體時需要這麼做。但是dd用處不僅僅是這一種場景。有興趣的同學可以自己百度查一下。
dd引數:
bs=bytes:同時設定讀入/輸出的塊大小為bytes個位元組。
count=blocks:僅複製blocks個塊,塊大小等於ibs/bs指定的位元組數
mkswap 設定交換分割槽
swapon 啟用交換分割槽
注意: 當伺服器記憶體小於4G的時候,交換分割槽一般設定為是記憶體的2倍.
如果想刪除這個交換區,則可以執行如下命令
sudo swapoff /var/cache/swap0 sudo rm /var/cache/swap0
swapoff 關閉交換分割槽
rm 刪除交換分割槽
方法2:設定編譯引數
在php的編譯引數後增加
--disable-fileinfo
重新編譯,問題得到解決。