eingusteのblog

Windows向けFFmpegバイナリを個人的にビルド(コンパイル)してます。その更新情報など。

2013年03月

libcdioを使用するとSEGVが発生し、エラー落ちすることがわかりました。
結果的には解決することができませんでした。
ただlibcdioを使用しなければエラー落ちしないので、組み込んだままにしておきます。
原因がFFmpeg側かlibcdio側かわかりませんが、バージョンアップすることで解決するかも知れません。それを期待して、そのままにしておきます。

外部ライブラリから外すことにしました。(2013-03-31 21:35)

mpfrをバージョン3.1.2に更新し、コンパイラやランタイムなどをビルドしなおしました。更新したのは64bit版です。

それに伴いFFmpegの64bit安定版のバイナリもビルドしなおしました。
リンクは今までと変わりありません。

PS
外部ライブラリlibcdioを取り除いたバイナリをアップしなおしました。(2013-04-01 00:24)

1.2系

FFmpeg 1.2 "Magic"(x64)(7z) 6.85M

1.1系

FFmpeg 1.1.4 "Fire Flower"(x64)(7z) 6.33M

1.0系

FFmpeg 1.0.6 "Angel"(x64)(7z) 6.17M

0.11系

FFmpeg 0.11.3 "Happiness"(x64)(7z) 5.71M

gcc-4.7.2のコンパイルメモです。
gmp, mpfr, mpc,binutilsおよびcloog,pplはインストール済みとします。「GCC 4.7のビルド お気に入りの動画を携帯で見よう」に詳しく書かれているので参考にします。
また「Windows x64用のクロスgcc - 七誌の開発日記」も参考にしています。

まずはgccのアーカイブを展開して、Failure when building mingw-w64-gcc-base (Page 1) / AUR Issues, Discussion & PKGBUILD Requests / Arch Linux Forumsを参考にパッチをあてます。

それから作業ディレクトリを作成します。

mkdir -p x86_64-pc-mingw32/gcc
cd x86_64-pc-mingw32/gcc

といった感じ。
そしてCloogとPPLのバージョン検出が上手くいかないので、configureにパッチをあてます。

その後、configureの実行。

CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ../../gcc-4.7.2/configure --target=x86_64-pc-mingw32 --disable-nls --enable-cloog-backend=isl --disable-libstdcxx-pch --enable-clocale=gnu

次にmakeの前にgcc/Makefileを編集。PPLLIBSを探して、-lstdc++を追加する。そしてmake。gcc/Makefileがmake all-gccで作成されるので、作成されてからPPLLIBSに-lstdc++を追加する。(configureで--with-host-libstdcxx=-lstdc++と指定するのがいいらしい。)

CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib make all-gcc

そして「5.9. GCC-4.7.2 - 2回め」を参考にして、limits.hを作成。これは必要ないかも。

cat ../../gcc-4.7.2/gcc/limitx.h ../../gcc-4.7.2/gcc/glimits.h ../../gcc-4.7.2/gcc/limity.h > \
  ./gcc/include-fixed/limits.h

コンパイラ部分のみのインストール。

make install-gcc

ヘッダのビルド

cd ..
mkdir headers
cd headers
../../mingw-w64-v2.0.7/mingw-w64-headers/configure --host=x86_64-pc-mingw32 --enable-sdk=all
make
make install
cd ..

次にランタイムをビルドしてから、gccの残っている部分をビルド。

cd ..
mkdir runtime
cd runtime
../../mingw-w64-v2.0.7/configure --host=x86_64-pc-mingw32 --without-headers
make
make install
cd ..
cd gcc
make
make install
cd ../..

とりあえずのメモ。

↑このページのトップヘ