樹莓派在編譯ROS程序的時候,卡在了這里,當時還以為是樹莓派性能不夠,查閱資料是樹莓派的swap交換空間不夠
搬磚:https://blog.csdn.net/wxz3wxz/article/details/70237302
這個問題出現的主要原因是我給樹莓派安裝的Ubuntu mate 16.04 系統默認設置的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,成功!!