Unix-like
*********

Libav の一部には、(少数の AMD64 ディストリビューションで未だ提供されている) GNU assembler のバージョン 2.15 ではビルドできないところがあります。 binutils のアップグレードの後には、コンパイラが必要なバージョンの gas を本当に使用していることを確認するため、

     $(gcc -print-prog-name=as) --version

を実行してください。もし使用していなければ、gas へのハードコードされたパスを持たないような異なるコンパイラをインストールするべきです。最悪の場合、 --disable-asm を渡して configure してください。

BSD
===

BSD make は Libav をビルドしないでしょう。GNU Make(gmake)をインストールし利用する必要があります。

(Open)Solaris
=============

Libav をビルドするために GNU Make が必要ですので、(gmake) を呼び出さなければならず、標準の Solaris Make ではうまくいかないでしょう。 c99 でないフロントエンド(gcc, generic suncc)でビルドする場合には、その libc が既定では c99 準拠ではないので、 --extra-libs=/usr/lib/values-xpg6.o または --extra-libs=/usr/lib/64/values-xpg6.o を configure オプションに追加してください。この構成によって作動する検査は例外を引き起こし、その結果 configure 自体が終了するかもしれません。これはシステム shell のバグによるものです。単純に、bash のような異なる shell を直接呼び出すことでこれを回避できます:

     bash ./configure

Darwin (OS X, iPhone)
=====================

Xcode で提供されるツールチェーンは基本となる高速化されていないコードをビルドするには十分です。

PowerPC または ARM (iPhone)上の OS X では、最適化されたアセンブラ関数をビルドするためにl http://github.com/yuvi/gas-preprocessor にあるプリプロセッサが必要です。単にこの Perl スクリプトをダウンロードし、 PATH のどこかに置いてください。Libav の configure がそれを自動的に拾います。

AMD64 および x86 上の OS X では、最適化されたアセンブラ関数のほとんどをビルドするために yasm が必要となります。 Homebrew (http://mxcl.github.com/homebrew/)、 Gentoo Prefix (http://www.gentoo.org/proj/en/gentoo-alt/prefix/bootstrap-macos.xml)、または MacPorts (http://www.macports.org) から簡単にインストールできるよう提供されています。

DOS
***

さまざまな理由からクロスコンパイラを使うことが望ましいです。 http://www.delorie.com/howto/djgpp/linux-x-djgpp.html

OS/2
****

OS/2 での Libav のコンパイルについての情報は http://www.edm2.com/index.php/FFmpeg を見てください。

Windows
*******

MinGW または MinGW-w64 を使ったネイティブ Windows コンパイル
===========================================

Libav は MinGW または MinGW-w64 ツールチェーンを使って Windows 上でネイティブに動作するようビルドできます。 MSYS と MinGW または MinGW-w64 の最新のバージョンを http://www.mingw.org/ または http://mingw-w64.sourceforge.net/ からインストールしてください。 download の節と FAQ で詳細なインストールのための指示を見つけることができます。

注意:

  * MSYS を使ってネイティブにビルドする際、単なる make の代わりに make -r を呼び出すことで Makefile 内の暗黙の規則を無効にし、速度を向上させることができます。この速度向上は一回きりのビルドではほとんどなく、2回目(例えば make install のとき)に make を実行したときに顕著になります。

  * AVplay をコンパイルするためには、SDL (http://www.libsdl.org/) の MinGW 開発ライブラリと pkg-config がインストールされていなければなりません。

  * Libav を configure する際に ./configure --enable-shared を使うことで全てのライブラリを DLL としてビルドできます。

Microsoft Visual C++
====================

Libav は MSVC で C99-to-C89 変換ユーティリティおよびラッパーを使ってビルドできます。現時点では、静的ビルドだけがサポートされています。

以下が事前に必要となります:

  * C99-to-C89 変換器およびラッパー (https://github.com/rbultje/c99-to-c89/)

  * msinttypes (http://code.google.com/p/msinttypes/)

  * MSYS (http://www.mingw.org/)

  * YASM (http://yasm.tortall.net/)

  * FATE (fate.html) を実行したい場合は bc for Windows (http://gnuwin32.sourceforge.net/packages/bc.htm)。

MSYS で適切な MSVC 環境をセットアップするには、Visual Studio のコマンドプロンプトから msys.bat を実行することだけが必要です。

警告: which link を実行して使おうとしている link がどれか確認してください。もしそれが /bin/link.exe にある場合、PATH に間違った link が含まれています。そのコピーを移動/削除するか、MSVC の link.exe が coreutils のものより PATH で上位にくるようにしてください。

c99wrap.exe、c99conv.exe、そして yasm.exe が PATH のどこかに配置してください。

次に、inttypes.h や他に使いたいヘッダおよびライブラリが MSVC に見えるような場所にあることを確認してください。このために、LIB と INCLUDE 環境変数を変更して Windows のパスにこれらのディレクトリを含めてください。もしくは、configure の --extra-cflags/--extra-ldflags オプションを使ってみることもできます。

最後に、次のように実行してください:

     ./configure --toolchain=msvc
     make
     make install

注意:

  * zlib サポートとともにビルドしたければ、MSVC import ライブラリと互換性のある zlib のバイナリをどこかから入手しなければなりません。あるいは、静的にリンクしたければ、MSVC と互換性のある zlib.lib をビルドするために以下にある指示に従ってみてください。どちらの方法を使っても、ステップ3には従ってください。でないとコンパイルに失敗するでしょう。

      1. zlib のソース (http://zlib.net/) を入手

      2. win32/Makefile.msc を編集し、-MD の変わりに -MT を使うようにしてください。これは Libav がビルドされているやり方と同じだからです。

      3. zconf.h を編集し、unistd.h をインクルードしているところを削除してください。これは Libav をビルドするときに誤ってインクルードされます。

      4. nmake -f win32/Makefile.msc を実行してください。

      5. zlib.lib、zconf.h、および zlib.h を MSVC から見えるどこかに移動してください。

  * Libav は Visual Studio 2010 および 2012、Pro、Express でテストされています。これら以外は公式にはサポートされません。

Microsoft Visual C++ で Libav にリンクする
-----------------------------------

MSVC でビルドされた静的ライブラリとリンクしようとしている場合、プロジェクトの設定で Runtime Library が Multi-threaded (/MT) に設定されていることを確認する必要があります。

Libav ヘッダは普通の dllexport/dllimport インターフェイスを通じて Windows DLL のためのグローバルデータを宣言していません。そういったデータはビルド中に適切にエクスポートされますが、あなたの MSVC コードでそれらを使うためには、適当なヘッダを編集しそのデータを dllimport としてマークしなければなりません。例えば、libavutil/pixdesc.h ではこのようにするべきです:

     extern __declspec(dllimport) const AVPixFmtDescriptor av_pix_fmt_descriptors[];

また inline を MSVC が理解できるものに定義する必要があります:

     #define inline __inline

また、Microsoft Visual C++ で述べているように、MSVC と互換性のある inttypes.h (http://code.google.com/p/msinttypes/) が必要であることに注意してください。

dlltool によって作成された import ライブラリを使おうとしている場合、リンカの最適化オプションで References を No (/OPT:NOREF) に設定しなければなりません。さもないと、できたバイナリは実行時に失敗するでしょう。これは lib.exe によって生成された import ライブラリを使う際には必要ありません。この課題はアップストリームで http://sourceware.org/bugzilla/show_bug.cgi?id=12633 にて報告されています。

/OPT:REF オプション(これはリリースモードでは既定で有効です) とともに動作する import ライブラリを作成するには、以下のステップに従ってください:

 1. Visual Studio 2005 Command Prompt を開く。

     あるいは、通常のコマンドラインプロンプトで、vcvars32.bat を呼んで Visual C++ ツールのための環境変数を設定してください (このファイルの標準的な場所は C:\Program Files (x86_\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat のようなところです)。

 2. 作成された LIB および DLL ファイルが保存されている bin ディレクトリに入ってください。

 3. lib.exe を使って新しい import ライブラリを生成してください:

          lib /machine:i386 /def:..\lib\foo-version.def  /out:foo.lib

     foo-version と foo をそれぞれのライブラリの名前で置き換えてください。

Linux による Windows 向けのクロスコンパイル
=============================

http://www.mingw.org/ にある MinGW クロスコンパイルツールを使わなければなりません。

そして Libav を次のオプションとともに configure してください:

     ./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-

(MinGW ツールのために選択された prefix に従って cross-prefix を変更することができます)。

そして Wine (http://www.winehq.com/) によって Libav を簡単にテストすることができます。

Cygwin でのコンパイル
==============

廃れた 1.5.x Cygwin バージョンには C ライブラリに llrint() が欠けていますので、Cygwin 1.7.x を使ってください。

単に全ての "Base" パッケージと、加えて以下の "Devel" パッケージとともに Cygwin をインストールしてください:

     binutils, gcc4-core, make, git, mingw-runtime, texi2html

FATE を動作させるために次の "Utils" パッケージが必要となるでしょう:

     bc, diffutils

Libav を追加のライブラリとビルドしたい場合には、Cygwin パッケージレポジトリから Ogg と Vorbis のための "Devel" パッケージをダウンロードしてください:

     libogg-devel, libvorbis-devel

これらのライブラリパッケージは Cygwin Ports (http://sourceware.org/cygwinports/) からのみ利用可能です:

     yasm, libSDL-devel, libfaac-devel, libgsm-devel, libmp3lame-devel,
     libschroedinger1.0-devel, speex-devel, libtheora-devel, libxvidcore-devel

x264 についてはソースからビルドすることをお奨めします、というのもそれが Cygwin Ports ではとても素早く更新されるためです。

Cygwin の下での Windows 向けのクロスコンパイル
===============================

Cygwin を使って cygwin1.dll が必要ない Windows バイナリを作成することができます。

以前に説明したように単に Cygwin を次の追加の "Devel" パッケージを加えてインストールしてください:

     gcc-mingw-core、mingw-runtime、mingw-zlib

そして configure 実行にあたっていくつか特別なフラグを加えてください。

静的なビルドのためには

     ./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin

を実行し、共有ライブラリをビルドするためには

     ./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin

を実行してください。