2016/10/30(日)Cygwin上のmingw32でfdk-aacをビルドしようとすると止まる

はてブ数 2016/10/30 07:21 計算機な日記::ボクと計算機つーさ

Cygwin入れてるのにわざわざmingwを別で入れるのはなあ。
Cygwin上でMinGWのgcc使えるはずだし、それでビルドできるんじゃないの。

tu-sa@t8 ~/fdk-aac-0.1.4
$ ./configure --build=i686-w64-mingw32 --host=i686-w64-mingw32 --prefix=/usr/local/fdkaac-mingw

tu-sa@t8 ~/fdk-aac-0.1.4
$ make -j

  GEN    libfdk-aac.la

で止まる。

CPU使用率も下がるし、ディスクアクセスもないし、何かを待ってる?
Makefileやら./libtool やら眺めると以下の行がマズいっぽい。

 func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |

cmd //c が上手く動かず、cmdが普通に起動して入力待ちになってしまうので、 cmd /c に直す。

tu-sa@t8 ~/fdk-aac-0.1.4
$ sed -i libtool -e 'sZcmd //cZcmd /cZg'

tu-sa@t8 ~/fdk-aac-0.1.4
$ make
  GEN    libfdk-aac.la
copying selected object files to avoid basename conflicts...

make できた。

どうもmsysでは、/c は c:\\ に置換されるのがデフォで、//cでそれをエスケープして単に「/c」の意味になる*1
cmd /c に書き換えたものは、mingw+msysの環境では、同じように止まってしまって動かないんだろな。。

*1 : Cygwinだとそのまま「//c」