Libav の一部には、(少数の AMD64 ディストリビューションで未だ提供されている) GNU assembler のバージョン 2.15 ではビルドできないところがあります。 binutils のアップグレードの後には、コンパイラが必要なバージョンの gas を 本当に使用していることを確認するため、
$(gcc -print-prog-name=as) --version
を実行してください。もし使用していなければ、gas へのハードコードされた
パスを持たないような異なるコンパイラをインストールするべきです。
最悪の場合、 --disable-asm
を渡して configure してください。
BSD make は Libav をビルドしないでしょう。GNU Make(gmake
)をインストールし利用する必要があります。
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
Xcode で提供されるツールチェーンは基本となる高速化されていないコードをビルドする には十分です。
PowerPC または ARM (iPhone)上の OS X では、最適化されたアセンブラ 関数をビルドするためにl http://github.com/yuvi/gas-preprocessor にあるプリプロセッサが必要です。単にこの Perl スクリプトをダウンロードし、 PATH のどこかに置いてください。Libav の configure がそれを自動的に 拾います。
AMD64 および x86 上の OS X では、最適化されたアセンブラ関数のほとんどを
ビルドするために yasm
が必要となります。
Homebrew、
Gentoo Prefix、
または MacPorts から簡単にインストールできるよう
提供されています。
さまざまな理由からクロスコンパイラを使うことが望ましいです。 http://www.delorie.com/howto/djgpp/linux-x-djgpp.html
OS/2 での Libav のコンパイルについての情報は http://www.edm2.com/index.php/FFmpeg を見てください。
Libav は MinGW または MinGW-w64 ツールチェーンを使って Windows 上でネイティブに動作するようビルドできます。 MSYS と MinGW または MinGW-w64 の最新のバージョンを http://www.mingw.org/ または http://mingw-w64.sourceforge.net/ からインストールしてください。 download の節と FAQ で詳細なインストールのための指示を見つけることができます。
注意:
make
の代わりに
make -r
を呼び出すことで Makefile 内の暗黙の規則を無効にし、
速度を向上させることができます。この速度向上は一回きりのビルドでは
ほとんどなく、2回目(例えば make install
のとき)に make を実行した
ときに顕著になります。
pkg-config
がインストールされていなければなりません。
./configure --enable-shared
を使うことで
全てのライブラリを DLL としてビルドできます。
Libav は MSVC で C99-to-C89 変換ユーティリティおよびラッパーを使ってビルドできます。 現時点では、静的ビルドだけがサポートされています。
以下が事前に必要となります:
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.lib
を
ビルドするために以下にある指示に従ってみてください。どちらの方法を使っても、ステップ3には従ってください。でないと
コンパイルに失敗するでしょう。
win32/Makefile.msc
を編集し、-MD の変わりに -MT を使うようにしてください。
これは Libav がビルドされているやり方と同じだからです。
zconf.h
を編集し、unistd.h
をインクルードしているところを削除してください。
これは Libav をビルドするときに誤ってインクルードされます。
nmake -f win32/Makefile.msc
を実行してください。
zlib.lib
、zconf.h
、および zlib.h
を MSVC から見えるどこかに
移動してください。
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 が必要であることに注意してください。
dlltool によって作成された import ライブラリを使おうとしている場合、リンカの最適化オプションで
References
を No (/OPT:NOREF)
に設定しなければなりません。さもないと、
できたバイナリは実行時に失敗するでしょう。
これは lib.exe
によって生成された import ライブラリを使う際には必要ありません。
この課題はアップストリームで
http://sourceware.org/bugzilla/show_bug.cgi?id=12633
にて報告されています。
/OPT:REF
オプション(これはリリースモードでは既定で有効です)
とともに動作する import ライブラリを作成するには、以下のステップに
従ってください:
あるいは、通常のコマンドラインプロンプトで、‘vcvars32.bat’ を呼んで Visual C++ ツールのための環境変数を設定してください (このファイルの標準的な場所は ‘C:\Program Files (x86_\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat’ のようなところです)。
lib.exe
を使って新しい import ライブラリを生成してください:
lib /machine:i386 /def:..\lib\foo-version.def /out:foo.lib
foo-version
と foo
をそれぞれのライブラリの名前で置き換えてください。
http://www.mingw.org/ にある MinGW クロスコンパイルツールを 使わなければなりません。
そして Libav を次のオプションとともに configure してください:
./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
(MinGW ツールのために選択された prefix に従って cross-prefix を 変更することができます)。
そして Wine によって Libav を簡単に テストすることができます。
廃れた 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 からのみ利用可能です:
yasm, libSDL-devel, libfaac-devel, libgsm-devel, libmp3lame-devel, libschroedinger1.0-devel, speex-devel, libtheora-devel, libxvidcore-devel
x264 についてはソースからビルドすることをお奨めします、 というのもそれが Cygwin Ports ではとても素早く更新されるためです。
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
を実行してください。