###環境の準備
Debianでの環境構築については以下に方法が書いてある
http://wiki.winehq.org/WineOn64bit#head-5dd049f4c05d95a80467aa965870ef41b7fa1988
###ビルド
最新版をビルドしたいところ
$ git log
commit 35aaa42669f0e5048b0f3b7583ec8230a5f4d7ba
Author: Alexandre Julliard <julliard@winehq.org>
Date: Fri May 10 20:30:10 2013 +0200
Release 1.5.30.
・注意
ここにあるように、パスにclangが入っているとビルドエラーになる。そしてこの状態は解消されていない。
wineの最新版をビルドする際は、clangを抜いた状態で行おう。
最近のwineはMac OSXよりなんだなあ
http://www.winehq.org/pipermail/wine-bugs/2013-February/346771.html
Wineのソースコードはよくメンテナンスされているようで、軽快にビルドできた。
configureの際はCFLAGS, CPPFLAGSにインクルードパスを設定しなければいけない。
$ cd wine/
$ CFLAGS='-I/usr/include -I/usr/include/x86_64-linux-gnu' \
CPPFLAGS='-I/usr/include -I/usr/include/x86_64-linux-gnu' \
./configure --prefix=/usr --without-freetype
$ make
###32bit/64bit対応Wine
ここの情報を元にする
http://wiki.winehq.org/Wine64
Wineのconfigureは /usr 以下においてあるmingwのクロスコンパイラを認識しているようです
その状態で/usr/include:/usr/include/x86_64-linux-gnuをCFLAGSやCPPFLAGSに指定すると
/usr/x86_64-w64-mingw32 以下のヘッダファイルと /usr/include/x86_64-linux-gnu 以下のヘッダファイルが
合わさり最強に見える 混ざり合ってコンパイルエラーになる。
$ mkdir ~/wine64
$ cd ~/wine64
$ PATH=$PATH:/usr/include:/usr/include/x86_64-linux-gnu \
~/git/wine/configure --prefix=/usr --enable-win64
$ mkdir ~/wine32
$ cd ~/wine32
$ CFLAGS='-I/usr/include -I/usr/include/x86_64-linux-gnu' \
CPPFLAGS='-I/usr/include -I/usr/include/x86_64-linux-gnu' \
LDFLAGS='-L/usr/lib/i386-linux-gnu' ~/git/wine/configure \
--prefix=/usr --with-wine64=../wine64
Debian Wheezyにて libhoge:i386 というパッケージ名でライブラリを入れると
たいてい /usr/lib/i386-linux-gnu 以下にライブラリの実体が入る。
configureはそいつらをリンクできるかどうか内部で試している。
例えばlibfontconfig:i386をインストールしていても、実際のファイル名が libfontconfig.so.x.xとかになっているため config.logに -lfontconfig でリンクしててエラーになっていることがある。
その場合configureに合わせてシンボリックリンクを張ってやればテストに通るようになる。
$ ln -s libXrender.so.1.3.0 libXrender.so
###i386ライブラリの自前ビルド
32bit向けライブラリがどうしても64bitのものと共存できない時がある。
そういう時はLinux内でクロスコンパイルしてしまえばいい。
/usr 以下に適当な場所を用意して、そこに32bit用ライブラリを入れる。
# mkdir /usr/i386-linux-gnu