树莓派編譯程式時遇到卡死的問題#
使用樹莓派編譯程式的時候,我遇到了程式比較大,編譯到某個檔案的時候樹莓派會死機,關機之後重啟可以繼續使用,但是編譯到同一個地方樹莓派又死機的問題。
這個問題出現的主要原因是我給樹莓派安裝的 Ubuntu mate 16.04 系統預設設定的 swap 交換空間不夠,而編譯某些檔案的時候需要較大的交換空間,樹莓派的交換空間被用滿所以樹莓派看起來好像是死機了的樣子。
解決方法,擴展 Ubuntu 的交換空間。
這裡使用的方法參照了 前人的博客,深表感謝。
第一步:確保系統中有足夠的空間來用作swap交換空間,我準備在一個獨立的檔案系統中添加一個 swap 交換檔案,在 /opt/image 中添加 2G 的 swap 交換檔案
sudo mkdir image
sudo touch swap
第二步:添加交換檔案並設定其大小為 2G,使用如下命令
sudo dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000
過段時間就返回如下結果:
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB, 2.0 GiB) copied, 242.095 s, 8.7 MB/s
PS:這個步驟說的好像很快的樣子,但是給我等的都有點懷疑人生了,我一度以為又死機了,重啟了 2 次,最後耐下心來等了幾分鐘,終於成功了,眼淚都要掉下來了。
第三步:創建(設定)交換空間,使用命令 mkswap
sudo mkswap /opt/image/swap
Setting up swapspace version 1, size = 2 GiB (2097147904 bytes)
第四步:檢查現有的交換空間大小,使用命令 free
free -m
total used free shared buff/cache available
Mem: 925 185 28 14 711 660
Swap: 0 0 0
或者檢查 meminfo 檔案
grep SwapTotal /proc/meminfo
第五步:啟動新增加的 2G 的交換空間,使用命令 swapon
sudo swapon /opt/image/swap
第六步:確認新增加的 2G 交換空間已經生效,使用命令 free
free -m
total used free shared buff/cache available
Mem: 925 328 56 32 541 502
Swap: 1999 0 1999
或者檢查 meminfo 檔案
grep SwapTotal /proc/meminfo
第七步:修改 /etc/fstab 檔案,使得新加的 2G 交換空間在系統重新啟動後自動生效
sudo vim /etc/fstab
在檔案最後加入:
/opt/image/swap /swap swap defaults 0 0
重啟之後再次編譯,YES,成功!!