プラットフォーム特有の情報


Table of Contents


1 Unix-like

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

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

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

1.1 BSD

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

1.2 (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

1.3 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 が必要となります。 HomebrewGentoo Prefix、 または MacPorts から簡単にインストールできるよう 提供されています。

2 DOS

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

3 OS/2

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

4 Windows

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

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

注意:

4.2 Microsoft Visual C++

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.exec99conv.exe、そして yasm.exePATH のどこかに 配置してください。

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

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

./configure --toolchain=msvc
make
make install

注意:

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

MSVC でビルドされた静的ライブラリとリンクしようとしている場合、プロジェクトの設定で Runtime LibraryMulti-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 ライブラリを使おうとしている場合、リンカの最適化オプションで ReferencesNo (/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-versionfoo をそれぞれのライブラリの名前で置き換えてください。

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

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

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

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

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

そして Wine によって Libav を簡単に テストすることができます。

4.4 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 からのみ利用可能です:

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

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

4.5 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

を実行してください。