Linuxでクロスビルド

通常のMinGWはLinuxでビルドに必要なコマンドをエミュレートしているためコンパイル速度が遅い。そこで、ここでは仮想環境でもいいのでLinuxマシンを用意し、MinGW Cross Environment(以下MXE)を用いた環境構築を行う。なお、ここで使用するLinuxはDebian系である。

MXEの環境を作る

まず、MXEの準備を行う。Gitをインストール。

sudo apt-get install git

インストールが終わったら、以下のコマンドでMXEを用意する。

git clone -b stable https://github.com/mxe/mxe.git

ダウンロードが完了したら以下のコマンドでMXEのビルドに必要なツールをインストールする。

apt-get install autoconf automake bash bison bzip2 \
 cmake flex gettext git g++ intltool \
 libffi-dev libtool libltdl-dev libssl-dev \
 libxml-parser-perl make openssl patch perl \
 pkg-config scons sed unzip wget xz-utils

次に、ビルドを行う。必要なライブラリごとにスペースで区切る。

make ffmpeg freetype jpeg libmad ogg libpng libsndfile speex vorbis libvpx x264 zziplib sdl sdl_net sdl_image sdl_ttf smpeg(以下略)

開発環境の構築は自動的に行なってくれるのでそのまましばらく待つ。(結構時間がかかります。)

AlephOneのビルド

AlephOneのディレクトリに行き、以下のシェルスクリプトmxe-build.shを作成する。

#!/bin/sh
PREFIX=/home/ユーザ名/mxe/usr
TARGET=i686-pc-mingw32
PATH="$PREFIX/bin:$PREFIX/$TARGET/bin:$PATH"

if [ -f "$PREFIX/$TARGET/bin/$TARGET-sdl-config" ]; then
    SDL_CONFIG="$PREFIX/$TARGET/bin/$TARGET-sdl-config"
    export SDL_CONFIG
fi

export PATH
LDFLAGS=-Wl,-S LIBS="-lfreetype -ltiff -ljpeg -lpng -lz -lbz2 -lstdc++ -lws2_32 -liphlpapi -liconv" ./configure --host=$TARGET --build=i386-linux --disable-vorbis --disable-smpeg --disable-mad

次に./autogen.shを実行し、configureなどを生成する。

先ほど作成したmxe_build.shを実行し、Makefileを生成する。あとは、makeを実行するだけ。