結論
メモリ不足でリンクが失敗している。対処は
- CPU に偏った(GPUにメモリをあげない)メモリ設定
- スワップファイルを増やす
前者ですめばラッキーですが、だめなときは後者、ただし物凄く時間がかかります...
経緯
メモリが256MByte しかない初期型 Raspberry Pi 上で ffmpeg をビルドしていて表題の現象でリンクに失敗しました。調べてみるとメモリ不足によるリンクの失敗なのだそうです。
そこで、raspi-config で CPU と GPU のメモリ配分を極端に CPU 側に倒し(GPU 16MByte、残り CPU)にしたのですが現象は変わらず。
仕方がないのでスワップファイルをデフォルトの100MByte から1GByte に増やしたら、なんとか4時間かけてビルドできました
これに4時間かかりました...
pi@raspberrypi /usr/src/ffmpeg $ sudo make
LD ffmpeg_g
CP ffmpeg
STRIP ffmpeg
CC ffprobe.o
ffprobe.c: In function ‘value_string.isra.11.constprop.16’:
ffprobe.c:256:21: warning: ‘vali’ may be used uninitialized in this function [-Wuninitialized]
LD ffprobe_g
CP ffprobe
STRIP ffprobe
CC ffserver.o
LD ffserver_g
CP ffserver
STRIP ffserver
pi@raspberrypi /usr/src/ffmpeg $
作業
1. メモリ設定の変更
1.1 raspi-config を起動する
pi@raspberrypi /usr/src/ffmpeg $ sudo raspi-config
1.2 こんな画面が開くので、8. Advanced Option を選択
1.3 A3 Memory Split を選択
1.3 GPU のメモリを 16MByte に設定
1.4 下矢印キーで Finish を選択
1.5 Yes でreboot。No で後でリブートしてもよいです
2. スワップファイルの増加
$ sudo service dphys-swapfile stop
$ sudo nano /etc/dphys-swapfile
$ sudo service dphys-swapfile start
2.1 dphys-swapfile を止める
2.2 nano editor が開いたら、デフォルトで 100になっている CONF_SWAPSIZE を 1024 に変更
2.3 control + o で保存、control + x で nano を終了
2.4 dphys-swapfile を再起動
感想
リンクに物凄く時間がかかってしまうので swap を増やすのは最後の手段なんでしょうけど... メモリ512MByte の raspi が欲しい気も...