MSYSでGTK+をビルドする手順をまとめました。
ビルド後のパッケージ一覧は前回の記事を参照してください。
- MSYSでGTK+をビルド (1)
http://7shi.hateblo.jp/entry/2012/04/30/181459
ビルドには非常に時間と手間が掛かります。自分でビルドしなくても本家でWindowsバイナリが公開されています。
参考までに私がビルドしたバイナリを置いておきます。/usr/localに展開することが前提のアーカイブです。
これは一時ディレクトリにインストールしたファイルを固めたものです。make installの代わりに使うスクリプトを作成したので、参考までに置いておきます。
Python
Windows用のPython 2.7.3をインストールしてPATHを通します。
$ export PATH=$PATH:/c/Python27
MSYSからPythonのビルドを試みましたが、ライブラリがうまく読み込めずに断念しました。参考までに作りかけのパッチを置いておきます。
- https://gist.github.com/2568924 ※ setup.pyで失敗します。
cURL
ダウンローダです。インストール直後のMinGW+MSYSにはダウンロード用のコマンドがないため、ブラウザなどでダウンロードします。
$ tar xvf curl-7.25.0.tar.lzma $ cd curl-7.25.0 $ ./configure $ make $ make install $ cd ..
使い方は、-LOオプションを付けてファイルをダウンロードします。Lはリダイレクトに対応、OはURLと同じファイル名で保存というオプションです。wgetと異なりオプションは省略できません。
$ curl -LO http://...
zlib
win32でconfigureすると拒否されるので、win32/Makefile.gccを指定します。
$ curl -LO http://zlib.net/zlib-1.2.6.tar.bz2 $ tar xvf zlib-1.2.6.tar.bz2 $ cd zlib-1.2.6 $ make -f win32/Makefile.gcc $ make -f win32/Makefile.gcc install SHARED_MODE=1 INCLUDE_PATH=/usr/local/include LIBRARY_PATH=/usr/local/lib BINARY_PATH=/usr/local/bin $ cd ..
何となく、zlibをbz2でダウンロードしました。
libffi
$ curl -LO ftp://sourceware.org/pub/libffi/libffi-3.0.11.tar.gz $ tar xvf libffi-3.0.11.tar.gz $ cd libffi-3.0.11 $ ./configure $ make $ make install $ cd ..
GLib
zlibとlibffiのフラグを指定します。
$ curl -LO http://ftp.gnome.org/pub/GNOME/sources/glib/2.32/glib-2.32.2.tar.xz $ tar xvf glib-2.32.2.tar.xz $ cd glib-2.32.2 $ CFLAGS=-march=i686 LDFLAGS=-L/usr/local/lib ZLIB_CFLAGS=-I/usr/local/include ZLIB_LIBS=-lz LIBFFI_CFLAGS=-I/usr/local/lib/libffi-3.0.11/include LIBFFI_LIBS=-lffi ./configure $ make $ make install $ cd ..
アトミック処理の関係でi486以上が要求されるため、i686を指定しています。glibではなくglibcでも似た事情があるので、参考までにリンクしておきます。
pkg-config
$ curl -LO http://pkgconfig.freedesktop.org/releases/pkg-config-0.26.tar.gz $ tar xvf pkg-config-0.26.tar.gz $ cd pkg-config-0.26
出力にゴミが付くのでパッチを当てます。
$ GLIB_CFLAGS="-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include" GLIB_LIBS=/usr/local/bin/libglib-2.0-0.dll ./configure $ make $ make install $ cd ..
使用している関数がインポートライブラリから隠されているため、DLLを直接リンクします。
- /usr/local/lib/glib-2.0.def
- g_win32_get_package_installation_directory PRIVATE
- g_win32_get_package_installation_subdirectory PRIVATE
libpng
$ curl -LO http://prdownloads.sourceforge.net/libpng/libpng-1.5.10.tar.xz $ tar xvf libpng-1.5.10.tar.xz $ cd libpng-1.5.10 $ CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure $ make $ make install $ cd ..
libjpeg
$ curl -LO http://ijg.org/files/jpegsrc.v8d.tar.gz $ tar xvf jpegsrc.v8d.tar.gz $ cd jpeg-8d $ ./configure $ make $ make install $ cd ..
LibTIFF
$ curl -LO ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.1.tar.gz $ tar xvf tiff-4.0.1.tar.gz $ cd tiff-4.0.1 $ CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure $ make $ make install $ cd ..
OpenJPEG
JPEG 2000用のライブラリです。
$ curl -LO http://openjpeg.googlecode.com/files/openjpeg-1.5.0.tar.gz $ tar xvf openjpeg-1.5.0.tar.gz $ cd openjpeg-1.5.0 $ ./configure $ make $ make install $ cd ..
FreeType
$ curl -LO http://download.savannah.gnu.org/releases/freetype/freetype-2.4.9.tar.bz2 $ tar xvf freetype-2.4.9.tar.bz2 $ cd freetype-2.4.9 $ ./configure $ make $ make install $ cd ..
pixman
autogenがうまくいかないため、Cairoの配布物を使用します。
$ curl -LO http://cairographics.org/releases/pixman-0.24.4.tar.gz $ tar xvf pixman-0.24.4.tar.gz $ cd pixman-0.24.4 $ ./configure $ make $ make install $ cd ..
Cairo
$ curl -LO http://cairographics.org/releases/cairo-1.12.2.tar.xz $ tar xvf cairo-1.12.2.tar.xz $ cd cairo-1.12.2 $ CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure
configureでssize_tが認識されないため util/cairo-missing/cairo-missing.h がエラーになります。手動で修正します。
$ echo "#define _SSIZE_T_DEFINED 1" >> config.h $ make $ make install $ cd ..
Poppler
PDF処理用のライブラリです。
$ curl -LO http://poppler.freedesktop.org/poppler-0.18.4.tar.gz $ tar xvf poppler-0.18.4.tar.gz $ cd poppler-0.18.4
Windowsではopenjpegがstdcallのためcdeclのスタブがリンクできないので、configureにパッチを当てます。
$ CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure $ make $ make install $ cd ..
gdk-pixbuf
$ curl -LO http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.26/gdk-pixbuf-2.26.1.tar.xz $ tar xvf gdk-pixbuf-2.26.1.tar.xz $ cd gdk-pixbuf-2.26.1 $ ./configure
make中にgdk-pixbuf-query-loaders.exeが落ちます(原因不明)。makeも止まったときは再度makeします。エラーを出しながら先に進むことがありますが、それでうまくいくようです。
$ make $ make install $ cd ..
ATK
$ curl -LO http://ftp.gnome.org/pub/GNOME/sources/atk/2.4/atk-2.4.0.tar.xz $ tar xvf atk-2.4.0.tar.xz $ cd atk-2.4.0 $ ./configure $ make $ make install $ cd ..
Pango
$ curl -LO http://ftp.gnome.org/pub/GNOME/sources/pango/1.30/pango-1.30.0.tar.xz $ tar xvf pango-1.30.0.tar.xz $ cd pango-1.30.0 $ ./configure $ make $ make install $ cd ..
GTK+
$ curl -LO http://ftp.gnome.org/pub/GNOME/sources/gtk+/2.24/gtk+-2.24.10.tar.xz $ tar xvf gtk+-2.24.10.tar.xz $ cd gtk+-2.24.10 $ ./configure $ make $ make install $ cd ..
本当はこの後でGtk#のビルドもしたいのですが、まだ成功していません。
【追記】Gtk#のビルドに成功しました。GTK+のバージョンも合わせました。
- MSYSでGTK+をビルド (3)
http://7shi.hateblo.jp/entry/2012/05/06/110555 - MSYSでGtk#をビルド
http://7shi.hateblo.jp/entry/2012/05/06/115013