Debianのパッケージに入っているWineが古いので、wineをgitからとってきてビルドしてみた。
GistとはてなブログのCSSがうまく連携できない〜
Wineのビルド · GitHub
環境の準備
Debianでの環境構築については以下に方法が書いてある
BuildingWine - The Official Wine Wiki
ビルド
最新版をビルドしたいところ
$ 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よりなんだなあ
[Bug 32872] New: Compilation broken if clang is installed, but not used for compilation.
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
ここの情報を元にする
Wine64 - The Official Wine Wiki
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