2010年06月29日

implicit declaration of function 'strcasecmp'


FFmpeg自前ビルドが趣味の皆様へ。

FFmpeg rev.23823から、こんなエラーが出てコンパイルできなくなりました。

libavfilter/parseutils.c: In function 'color_table_compare':
libavfilter/parseutils.c:217:5: error: implicit declaration of function 'strcasecmp'

rev.23823のアップデートで、CFLAGSに
-Werror=implicit-function-declaration
というフラグが付いて、今までwarningでコンパイルが通っていたのが、エラーで終了するようになってしまったんですね。

この件について、バグレポートが上がっていました。

str[n]casecmp not declared under __STRICT_ANSI__
http://sourceforge.net/tracker/?func=detail&aid=3022047&group_id=2435&atid=102435

tempnam not declared under __STRICT_ANSI__
http://sourceforge.net/tracker/?func=detail&aid=3022054&group_id=2435&atid=102435


そのうち修正されると思いますが、とりあえずこちらのパッチを適用してください。

/mingw/include/string.h のパッチ。
$ patch -p0 < strcasecmp.diff

/mingw/include/stdio.h のパッチ。
$ patch -p0 < tempnam.diff

ご参考まで。
posted by あべちん at 01:52 | Comment(0) | TrackBack(0) | FFmpegビルド

2010年06月16日

FFmpegのコンパイル (2010/6/15)


それでは、FFmpegのコンパイルです。

1. MSYS環境のアップデート
MSYS-1.0.11以上をインストールした場合、bashとmakeは新しい物になっています。
make 3.8.1 以上
bash 3.1 以上
であれば問題ありません。

MSYS環境が古い場合、bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ることがありますので、MSYSのshを更新しておきましょう。
makeも古い場合は更新します。

・make-3.81
http://sourceforge.net/downloads/mingw/MSYS/make/make-3.81-3/
make-3.81-3-msys-1.0.13-bin.tar.lzma

・bash-3.1.17
http://sourceforge.net/downloads/mingw/MSYS/bash/bash-3.1.17-3/
bash-3.1.17-3-msys-1.0.13-bin.tar.lzma

http://sourceforge.net/projects/mingw/files/MSYS/BaseSystem/bash/bash-3.1.17-2/
bash-3.1.17-2-msys-1.0.11-bin.tar.lzma

ダウンロードしたファイルを、C:\msys\1.0\ に解凍します。


2. MinGW環境のアップデート
現時点での最新版、gcc-4.5.0をインストールします。
現時点での最新版、gcc-4.5.2をインストールします。
以下のファイルを、すべて
C:\MinGW\
に、解凍します。

以下の旧バージョンのライブラリが
C:\MinGW\lib\
のディレクトリに残っている場合は削除してください。
libstdc++.a
libstdc++.la
libsupc++.a
libsupc++.la


・gcc-4.5.2
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/GCC/Version4/gcc-4.5.2-1/
gcc-core-4.5.2-1-mingw32-bin.tar.lzma
gcc-c++-4.5.2-1-mingw32-bin.tar.lzma
libgomp-4.5.2-1-mingw32-dll-1.tar.lzma
libgcc-4.5.2-1-mingw32-dll-1.tar.lzma
libssp-4.5.2-1-mingw32-dll-0.tar.lzma
libstdc++-4.5.2-1-mingw32-dll-6.tar.lzma

・gmp
http://sourceforge.net/downloads/mingw/MinGW/gmp/gmp-5.0.1-1/
libgmpxx-5.0.1-1-mingw32-dll-4.tar.lzma
libgmp-5.0.1-1-mingw32-dll-10.tar.lzma

・mpfr
http://sourceforge.net/downloads/mingw/MinGW/mpfr/mpfr-2.4.1-1/
libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma

・mpc
http://sourceforge.net/downloads/mingw/MinGW/mpc/mpc-0.8.1-1/
libmpc-0.8.1-1-mingw32-dll-2.tar.lzma


上記のもの以外に、最新版のGCCは以下の所からもダウンロードできます。
どちらかお好みでインストールしてください。
・TDM-GCC
http://tdm-gcc.tdragon.net/download
・Komisar Mingw stuff
http://komisar.gin.by/mingw/


その他、以下の3つのパッケージも最新のものにしておきましょう。
MinGWをインストールした時点で最新版になっていれば、更新は不要です。

・GNU Binutils
http://sourceforge.net/projects/mingw/files/MinGW/BaseSystem/GNU-Binutils/binutils-2.21/
binutils-2.21-2-mingw32-bin.tar.lzma

・MinGW API for MS-Windows
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/RuntimeLibrary/Win32-API/w32api-3.17/
w32api-3.17-2-mingw32-dev.tar.lzma

・MinGW Runtime
http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/RuntimeLibrary/MinGW-RT/mingwrt-3.18/
mingwrt-3.18-mingw32-dev.tar.gz
mingwrt-3.18-mingw32-dll.tar.gz

上記のファイルを、すべてC:\MinGW\ の下に解凍すればOKです。

2010/06/29 追記
FFmpeg rev.23823以降のコンパイルの時、strcasecmp関数とtempnam関数がエラーになってしまいます。
こちらの記事を参考にパッチを適用してください。
implicit declaration of function 'strcasecmp'


2011/03/31 追記
2011/03/25の更新で、strcasecmp関数とtempnam関数のパッチは不要になりました。


追加で、MSYS DTKをインストールします。

MSYS Supplementary Tools
http://sourceforge.net/downloads/mingw/MSYS/Supplementary%20Tools/msysDTK-1.0.1/
より、
msysDTK-1.0.1.exe
を、ダウンロードして実行します。
perl、automake、autoconfなどがインストールされます。



posted by あべちん at 02:18 | Comment(0) | TrackBack(0) | FFmpegビルド

2010年05月28日

FFmpegのコンパイル (2010/5/28)


いよいよ、FFmpegのコンパイルです。

1. MSYS環境のアップデート
MSYS-1.0.11以上をインストールした場合、bashとmakeは新しい物になっています。
make 3.8.1 以上
bash 3.1 以上
であれば問題ありません。

MSYS環境が古い場合、bash-2.0だと、configureの判定ルーチンで引っかかって、
Broken shell detected. Trying alternatives.
というメッセージが出ることがありますので、MSYSのshを更新しておきましょう。
makeも古い場合は更新します。

MinGW公式ページからダウンロードリンクが見つからなくなっていますので、こちらに置いておきます。
bash-3.1-MSYS-1.0.11-1.tar.bz2
make-3.81-MSYS-1.0.11-2.tar.bz2
をダウンロードして、C:\msys\1.0\ に解凍します。


2. MinGW環境のアップデート
gcc4.4系の安定版の最新はgcc4.4.3ですが、MinGWのwebページには、gcc4.4系はgcc4.4.0までしかないので、とりあえずそれをインストールしておきましょう。
C:\MinGW\ に環境があれば、以下のファイルをダウンロードして、C:\MinGW\ の下に解凍すればOKです。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435
GCC Version 4
Current Release_ gcc-4.4.0 より、
gcc-core-4.4.0-mingw32-bin.tar.gz
gcc-core-4.4.0-mingw32-dll.tar.gz
gcc-c++-4.4.0-mingw32-bin.tar.gz
gcc-c++-4.4.0-mingw32-dll.tar.gz
gmp-4.2.4-mingw32-dll.tar.gz
mpfr-2.4.1-mingw32-dll.tar.gz

自分でgccをビルドするのは面倒だけど、できるだけ最新版を使いたいという方は、以下の所からダウンロードできます。
TDM's Experimental GCC/MinGW32 Builds
http://www.tdragon.net/recentgcc/


MinGW GCC 4.5.0をインストールする場合は、以下の記事を参考にしてください。
MinGW GCC 4.5.0リリース


その他、以下の3つのパッケージも最新のものにしておきましょう。
MinGWをインストールした時点で最新版になっていれば、更新は不要です。

以下のページから、
http://sourceforge.net/project/showfiles.php?group_id=2435

GNU Binutils
binutils-2.20.1 より、
binutils-2.20.1-2-mingw32-bin.tar.gz

MinGW API for MS-Windows
w32api-3.14 より、
w32api-3.14-mingw32-dev.tar.gz

MinGW Runtime
mingwrt-3.18 より、
mingwrt-3.18-mingw32-dev.tar.gz
mingwrt-3.18-mingw32-dll.tar.gz

上記のファイルを、すべてC:\MinGW\ の下に解凍すればOKです。


追加で、MSYS DTKをインストールします。
以下のページより、
http://sourceforge.net/project/showfiles.php?group_id=2435

MSYS Supplementary Tools
msysDTK-1.0.1 より、
msysDTK-1.0.1.exe
を、ダウンロードして実行します。
perl、automake、autoconfなどがインストールされます。



posted by あべちん at 22:32 | Comment(3) | TrackBack(0) | FFmpegビルド