gtk のソースに興味があったので、ソースからコンパイルしてみる事にした。
目的: テキストエディタのスクロールの方法を知りたい。
前に使ったお手軽インストーラー http://gladewin32.sourceforge.net に合わせて、ちょっと古いバージョン(GTK+ 2.10.11)を使う。実は最新のやつは依存ライブラリも新しくしないといけないので見合わせた。
http://ftp.gnome.org/pub/gnome/sources/gtk+/2.10/gtk+-2.10.12.tar.bz2
configure
ちょっとしたバグがあるらしいので、次のようなおまじないで回避します。
$ vi pkg-config.sh #!/bin/sh if pkg-config "$@" > /dev/null 2>&1 ; then res=true else res=false fi pkg-config "$@" | tr -d \\r && $res $ export PKG_CONFIG=c:/takashi/src/gtk+-2.10.12/pkg-config.sh # ここは貴方のパス $ ./configure ... 待つ
make
その後 make すると、demos/ のコンパイルで libglib-2.0-0.dll が無いと言うが出ると思います。正しい直し方は良く分かりませんが、野生の勘で次のように Makefile を書き換え、簡単インストーラについていた gtk-pixbuf-csource を使うようにすると通りました。
$ diff -u demos/Makefile.orig demos/Makefile --- demos/Makefile.orig Sun Mar 2 06:06:42 2008 +++ demos/Makefile Sun Mar 2 07:39:16 2008 @@ -330,7 +330,7 @@ BUILT_SOURCES = test-inline-pixbufs.h #pixbuf_csource = $(GDK_PIXBUF_CSOURCE) -pixbuf_csource = GDK_PIXBUF_MODULE_FILE=$(top_builddir)/gdk-pixbuf/gdk-pixbuf.loaders $(top_builddir)/gdk-pixbuf/gdk-pixbuf-csource +pixbuf_csource = gdk-pixbuf-csource #pixbuf_csource_deps = pixbuf_csource_deps = $(top_builddir)/gdk-pixbuf/gdk-pixbuf-csource $(top_builddir)/gdk-pixbuf/gdk-pixbuf.loaders
デバッグしてみる。
$ cp gtk/.libs/libgtk-win32-2.0-0.dll /c/GTK/bin/
のように出来上がったライブラリを古い奴に上書きすると、ライブラリの中までデバッグ出来ます(本当はインストールしようかと思ったけど、例の libglib-2.0-0.dll のエラーが出て上手く行きませんでした。何故だ???)。試しに examples/ の中に沢山サンプルがあるのを試してみると大変面白いです。サンプルに付いてくる Makefile は -g オプションが付いてないので、CFLAGS に -g を追加するのを忘れないようにしないといけません。私はソースコードだけ読むという事が出来ないので、このようにデバッガを使いながらだと楽しくソースを味わう事が出来てとても快適です。
失敗談
上の pkg-config.sh を vi を使わないでヒヤドキュメントでかっこよく作ろうとしてハマった。$ や \ があるとクォート難しい。しかも眠くてどこが悪いのか分からなかった。