Tangwx

Tangwx

博客网站

树莓派のプログラムコンパイル中にフリーズする問題に遭遇しました。

ラズベリーパイのプログラムコンパイル中にフリーズする問題に遭遇#

ラズベリーパイでプログラムをコンパイルする際に、プログラムが大きくなると、あるファイルまでコンパイルするとラズベリーパイがフリーズしてしまい、シャットダウンして再起動すると続きから使用できるが、同じ場所までコンパイルすると再びフリーズする問題が発生しました。

この問題の主な原因は、ラズベリーパイにインストールされている Ubuntu mate 16.04 システムのデフォルトのスワップスペースが不足しているためであり、一部のファイルをコンパイルする際には大きなスワップスペースが必要ですが、ラズベリーパイのスワップスペースがいっぱいになっているため、ラズベリーパイはフリーズしたように見えます。

解決策は、Ubuntu のスワップスペースを拡張することです。

ここで使用する方法は、先人のブログを参考にしました。深く感謝します。

ステップ 1:スワップスペースに使用する十分なスペースがシステムにあることを確認します。私は独立したファイルシステムに 2G のスワップファイルを /opt/image に追加する準備をしました。

sudo mkdir image
sudo touch swap

ステップ 2:スワップファイルを追加し、サイズを 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:このステップは非常に速いように言われていますが、私は待っている間に人生に疑問を持ちました。何度か再起動しましたが、最後に心を落ち着かせて数分待ちました。ついに成功しましたが、涙が出そうでした。

ステップ 3:スワップスペースを作成(設定)します。mkswap コマンドを使用します。

sudo mkswap /opt/image/swap

Setting up swapspace version 1, size = 2 GiB (2097147904 bytes)

ステップ 4:現在のスワップスペースのサイズを確認します。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

ステップ 5:追加した 2G のスワップスペースを起動します。swapon コマンドを使用します。

sudo swapon /opt/image/swap

ステップ 6:追加した 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

ステップ 7:/etc/fstab ファイルを変更し、新しく追加した 2G のスワップスペースがシステム再起動後に自動的に有効になるようにします。

sudo vim /etc/fstab

ファイルの最後に追加します:

/opt/image/swap    /swap    swap    defaults 0 0

再起動後に再度コンパイルしてみてください。はい、成功しました!

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。