お気に入りの動画を携帯で見ようスマートフォン専用ページを表示お気に入りの動画を携帯で見よう携帯動画変換君用に最新のFFmpegをビルドしてみる。最新版のFFmpegは、カテゴリの【FFmpegダウンロード】からどうぞ。プロフィール名前:あべちん職業:サラリーマン一言:B'zと櫻坂46のファンです。似顔絵は【似顔絵イラストメーカー】で作成しました。4.6をビルドします。MinGW環境についてGCCを自前でビルドしようという方は、MinGW環境もすでにあるという前提で、細かい説明は省略します。MinGW環境については、こちらもお読みいただくと参考になると思います。(2011/04/12)追加で、FlexとTexinfoをインストールします。インストール済みの場合は、あらためてインストールする必要はありません。以下のファイルを、C:\msys\1.0\に、解凍します。インストールした場合、MSYSの場所は、C:\MinGW\msys\1.0\になっているかもしれません。Windowsのbisonが応答しなくなって、固まる場合があります。その場合は、MSYSにbisonをインストールしてください。ライブラリのインストール以下のライブラリは、あらかじめインストールしておいてください。最新版は、各ライブラリのページで確認してください。2.9.0zlib-1.2.6libiconv-1.13.1gmp-5.0.4mpfr-3.1.0mpc-0.9ppl-0.12cloog-0.17.0必要なライブラリなどについては、こちらも参照してください。ソースコードの準備GCC4.6のソースコードは、このページから適当なサーバを選んでダウンロードしてください。http://gcc.gnu.org/mirrors.htmlこの辺りから、ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.6.3/gcc-core-4.6.3.tar.bz2gcc-g++-4.6.3.tar.bz2gcc-objc-4.6.3.tar.bz2を、ダウンロードします。ada、java、fortranは、あまり使用しないので省略します。ファイルを適当な場所に保存して、解凍します。gcc-objc-4.6.3.tar.bz2次に、libgompパッチlibgomp-configure.diffmake-temp-fileパッチmake-temp-file.diffを適用します。gcc-4.5.0用のパッチですが、そのまま使用します。追記libgomp/configureのパッチは不要でしたので、削除しました。追記cloog-0.17.0に対応するためのパッチを追加しました。gcc-4.7のソースを参考にしました。GCCのビルドここまで準備ができましたら、GCCをビルドします。ソースコードとビルド用のディレクトリは、分けておいた方がよいと思います。私の場合は、こんな感じにしています。)ビルド用のディレクトリで、configureを実行します。noとなってしまうので、「--disable-cloog-version-check」を追加しました。ついでに、「--enable-fully-dynamic-string」を追加しました。--disable-bootstrapgcc-4.6.0から新たに、--enable-cloog-backend=islというオプションを追加しています。configureオプションについては、こちらを参照してください。--with-tune=athlon64などとすると良いかもしれません。--with-tune=nativeでも良いかもしれません。-mtune=i386がデフォルト値になります。configureが終了したら、makeします。1>out.logそのままmakeだけすると、デバッグシンボル入りの巨大なバイナリになってしまうため、フラグを変えています。メッセージをログに保存して、何か問題があった時に参照できるようにしています。installするのはちょっと危険です。私の場合、TDMさんだったか誰かのインストールスクリプトを参考に、以下のように、実行環境とは別のディレクトリにインストールしています。installMSYSから見ると、/develop/sandpit/dw2/mingw/実際のディレクトリは、C:\msys\1.0\develop\sandpit\dw2\mingw\に、インストールされます。あとは、ディレクトリ構造を変えずに、そのままMinGW環境に上書きすれば完了です。installまでの流れは、けっこう時間がかかりますので、私はスクリプトで流しています。参考までに、こちらに置いておきます。追記ビルドス用のスクリプトを更新しました。gcc-4.6.3-build-dw2-generic.sh【補足】この手順では、最初はgcc-4.5.2でgcc-4.6.2をビルドしています。一通りビルドし終わった後、出来上がったgcc-4.6.2で、もう一度個別ライブラリからgcc-4.6.2本体までビルドすれば完璧です。削除すれば、stage1〜stage3まで繰り返して、仮のコンパイラで本体をコンパイルしてくれるのですが、gcc-4.5.2で試した時はものすごく時間がかかったのと、HDDの空き容量に余裕がないとできないので、gcc-4.6.2では試していません。追記libgomp/configureのパッチは不要でしたので、削除しました。追記gcc-4.6.1がリリースされました。追記スクリプトを、gcc-4.6.1用に修正しました。追記MinGW環境についての参考リンクを、変更しました。追記gcc-4.6.2がリリースされました。追記スクリプトを、gcc-4.6.2用に修正しました。追記ダウンロードURLを修正しました。インストールした場合、MSYSの場所は、C:\MinGW\msys\1.0\になっているかもしれません。各ライブラリのバージョンを修正しました。追記cloog-0.17.0に対応するためのパッチを追加しました。gcc-4.7のソースを参考にしました。noとなってしまうので、「--disable-cloog-version-check」を追加しました。ついでに、「--enable-fully-dynamic-string」を追加しました。追記ビルドス用のスクリプトを更新しました。cloog-0.17.0に対応するため、「--disable-cloog-version-check」を追加しました。ついでに、「--enable-fully-dynamic-string」を追加しました。追記gcc-4.6.3がリリースされました。各ライブラリのバージョンを修正しました。追記ビルドス用のスクリプトを更新しました。language(gccgo)が追加されているのですが、MinGWに実装されていないsignal.h関連の関数sigprocmask、sigaddset、sigdelsetなどが使用されているため、gccgoはあきらめました。4.5.0とほとんど同じですので、こちらの記事を参考にしてください。4.5のビルドgcc-4.6-20110212のソースに、以下のパッチを適用してください。installします。4.5.0と4.6.0のconfigureオプションの違いは、以下の点です。--enable-ltolto-pluginは、MinGWでもビルドできるように修正されていました。--with-tune=athlon64などとすると良いかもしれません。参考までに、ビルドスクリプトをこちらに置いておきます。4.6の対応が進んでいるようです。試してみたい方は、ご参考にどうぞ。language(gccgo)が追加されているのですが、何度やってもビルドできなくて、gccgoはあきらめました。4.5.0とほとんど同じですので、こちらの記事を参考にしてください。4.5のビルドgcc-4.6-20110122のソースに、以下のパッチを適用してください。installします。4.5.0と4.6.0のconfigureオプションの違いは、以下の2つを追加している点です。--with-tune=athlon64などとすると良いかもしれません。参考までに、ビルドスクリプトをこちらに置いておきます。gcc-4.6-20110122-build-dw2-generic.sh試しにffmpeg一式コンパイルし直してみたのですが、なぜかwmaのデコードでffmpegがクラッシュします。testでも、wmaの所でエラーになりました。wma以外は、正常に動作するようです。試してみたい方は、ご参考にどうぞ。gcc-4.6で修正されて、クラッシュしなくなりました。4.6が正式リリースされたら採用しようと思います。4.6.0のビルドでつまずいた点を、参考までに残しておきます。したかったのですが、個別には指定できず、全部disableになります。lto-pluginが無くてもltoは使えるので、--disable-lto-pluginとしました。