#結論
メモリ不足でリンクが失敗している。対処は
- CPU に偏った(GPUにメモリをあげない)メモリ設定
- スワップファイルを増やす
前者ですめばラッキーですが、だめなときは後者、ただし物凄く時間がかかります...
#経緯
メモリが256MByte しかない初期型 Raspberry Pi 上で ffmpeg をビルドしていて表題の現象でリンクに失敗しました。調べてみるとメモリ不足によるリンクの失敗なのだそうです。
そこで、raspi-config で CPU と GPU のメモリ配分を極端に CPU 側に倒し(GPU 16MByte、残り CPU)にしたのですが現象は変わらず。
仕方がないのでスワップファイルをデフォルトの100MByte から1GByte に増やしたら、なんとか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.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 が欲しい気も...