試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Wineのライブラリやドライバを個別にビルド(バイナリパッケージを使用している場合の修正に便利)

Wineのソースツリーのdllディレクトリ以下にはライブラリやドライバごとにディレクトリが分かれて存在し、それぞれは独立しているため、ディストリのバイナリ(実行形式)パッケージを使用していて、一部のライブラリやドライバのみ修正して使用したいというときに、その対象だけをビルドしてシステムのファイルに上書きすることで、Wine全体をビルドせずに修正を行うことができる。

ソースの準備

事前にWineのソースをダウンロードし、展開しておく。ソースを修正する場合はここで行っておく。

$ tar jxf wine-[バージョン].tar.bz2
$ cd wine-[バージョン]/

configureスクリプト

Makefileを作成するために実行。オプションやコンパイラオプション(CFLAGS)は、必要がある場合にのみ付ける(パッケージは基本的に自動検出で有効にされる*1形になっている)。x86_64上でも、自動的に32bitでビルドするようになっているため、特別な指定は不要。

./configure

ビルド

  • make depend」を一番先に(「-j1」で)実行しておく
  • libstoolsディレクトリ内でmakeしておく
  • ライブラリやドライバは、システムのWineの各種ライブラリをリンク時に使用するために、変数LDFLAGSをディストリに合わせて「-L/usr/lib32/wine」や「-L/usr/lib/wine」のように指定してビルドする

例として、winealsa.drvをビルドする場合、

$ make depend
$ for dir in libs tools; do cd ${dir}; make; cd ../; done
$ cd dlls/winealsa.drv/; make LDFLAGS="-L/usr/lib32/wine"; cd ../../

のようにする。

ファイルの上書き

LDFLAGS指定のときと同様、ディストリに合わせて.soファイルを指定場所にコピーして上書きする。好みにより、元ファイルを事前にコピーしておくのもよい。

$ sudo cp dlls/winealsa.drv/winealsa.drv.so /usr/lib32/wine/

使用したバージョン:

  • Wine 0.9.51

関連記事:

*1:ディストリによっては、ビルド環境パッケージや各種「-dev」「-devel」パッケージが必要になる