Skip to content

Instantly share code, notes, and snippets.

@hangingman
Last active January 16, 2016 08:27
Show Gist options
  • Save hangingman/f7ad529b6e3664452a29 to your computer and use it in GitHub Desktop.
Save hangingman/f7ad529b6e3664452a29 to your computer and use it in GitHub Desktop.
Wineのビルド

###環境の準備

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  
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment