Sylpheed-2.0.0beta1をビルドするまでの手順のメモです。
GTK+
・gimp.orgが提供しているバイナリはVC++あるいはmingw用で、cygwinで使用する際にはコンパイルオプションに-mno-cygwinが必要。
当初、cygwin環境でのビルドは挫折しました。
旧版sylpheed-1.0.0-gtk2-20041224のビルド手順
・cygwinのsetup.exeでホストをhttp://web.sfc.keio.ac.jp/~sakai/cygwin/に設定し、以下のパッケージをinstall。
glib-2.2.1-2.tar.gz、gtk2-win32-2.2.1-3.tar.gz、pango-1.2.1-2.tar.gz
・ビルド手順
sylpheed-1.0.0-gtk2-20041224.tar.gzをダウンロードして展開。
展開したディレクトリで、./configure --prefix=/usr し、make 、 make install
[url=article.php?articleid=43]mingw32環境にチャレンジ[/url]するも挫折、cygwin環境でのビルドに再度挑戦。
Win32環境でgtk+の最新バージョンのビルドに成功しているグループ、[url=http://sourceforge.jp/projects/gtklab/]GTK+ 実験室[/url]が公開しているgtk+-2.6.7.2-srcを使ってチャレンジ。
バイナリを見た感じcygwin環境ではないようだが、gtk+に必要な各種ソースがまとまっていて、特に各ツール間のバージョンの依存関係がgtk+のビルド可能な状態になっているのでチャレンジすることにした。
・gtk+-2.6.7.2-srcに含まれるautogen.batを実行すると必要なソースが展開される。
以下の順番でビルド&インストールを実施する。
[d]・gettext-0.14.5[/d]
[d]・jpeg-6b[/d]
[d]・libiconv-1.9.2[/d]
・libpng-1.2.8
scripts/makefile.cygwin を ./Makefile としてコピーして使用する。
・tiff-3.7.2
c++用のライブラリのリンクでエラーになるので、C++サポートを外す。
→configure --prefix=/usr --disable-cxx
[d]・zlib-1.2.2[/d]
・glib-2.6.4
makeするとリンク中にいくつかのシンボル未定義エラーが発生する。
→内部で参照されていないconst変数がエクスポートできないため。
-fkeep-const-symbolsを指定してもNG、--export-all-symbolsはcc1でエラー
になるので、
glib/gstrfuncs.[ch]:g_ascii_table、glib/gunicode.h:g_utf8_skip、
glib/gutf8.c:g_utf8_skip、
glib/gutils.[ch]:glib_major_version,glib_minor_version,
glib_micro_version,glib_interface_age,glib_binary_age
上記変数のconst指定を外すことでビルド出来た。
・atk-1.6.1
・pango-1.8.1
・gtk+-2.6.7のビルド完了までの紆余曲折
configureではgdkターゲットにwin32、X環境無しを指定する。
→./configure --prefix=/usr --with-gdktarget=win32 --without-x
makeするとgdk/配下のビルドで"more than one exported-symbols argment .."
というエラー。
→-export-symbols=gdk.defと-export-symbols-regexの両方が設定されて
いたため、gdk/Makefile.inで-export-symbols=gdk.defを除外しconfigure
からやり直し。
gtk/でのリンク時にgdk関連のシンボルすべてに対して未定義エラー。
→リンクオプションを調整したりしたが、gdk/配下でDLLが生成されないなど問題が多く、
結局cygwinにlibtool-1.5.18をインストールしていたのが各所でDLL作成に問題を
起こしていた可能性があったので libtool を uninstall。
DLLのビルドにはlibtoolが必要だが、ビルドする各ソースにはlibtoolあるいはlibtool
生成用のファイルが添付されているので問題無いようである。
→mingw32でのビルドのチャレンジの際にGTKの開発環境をインストールしていたの
だが、インストーラが環境変数にGTK関連の設定を行っており、これがビルド中の
ソース環境と衝突していた可能性も考慮して環境変数からGTK関連のものを削除。
→glib、atk、pangoをそれぞれmake uninstallし、再度configureからビルドしなおし
インストールた後、gtk+-2.6.7もconfigureからビルドしなおしたところgdk/でも無事
DLLが生成されるようになり、 シンボル参照の問題も発生しなくなった。
gtk/でのリンク時に-luuidでエラー
→./configure.inでGDK_EXTRA_LIBSの-luuidを-Wl,-luuidに変更し、autoconf
でconfigureを作成、make distcleanの後configureからやり直し。
docs/tools/shooter.cのコンパイルでX11関連のエラー。
→docs/toolsがX11環境にしか対応されていないようなので、docs/Makefileの
SUBDIRの定義からtoolsを除外。
GTK+-2.6.7のビルドのまとめ
・cygwinにlibtoolがinstallされている場合はuninstall、libltdlはinstallされていても問題
無いらしい。
・cygwinのsetup.exeにてlibiconv-1.9.2-1、libintl、libintl[1-3]、gettext-0.14.1-1、
jpeg-6b-11、のインストールを確認。
・configure.inの変更
GDK_EXTRA_LIBSの-luuidを-Wl,-luuidに変更。
・autoconf実行。
・configure後、gdk/Makefileの変更
libgdk_win32_2_0_la_DEPENDENCIESからgdk.defを除外
libgdk_win32_2_0_la_LDFLAGSから-export-symbols=gdk.defを除外。
LDADDから-export-dynamicを除外
・docs/Makefileの変更
SUBDIRSの定義からtoolsを除外。
sylpheed-2.0.0beta1のビルド
sylpheed-2.0.0beta1.tar.gzを展開したディレクトリに移動し以下を実行。
./configure --prefix=/usr --enable-ldap --disable-ipv6
make
リンクの際に-lresolv、-lsslでエラー。
→ldapが必要とするので、minires-devel、openssl-develパッケージをinstall。
sylpheed-2.0.0beta起動。しかしコンソールが表示されてしまう。
src/MakefileにてLDFLAG = -Wl,--subsystem,windowsとし、src/sylpheed.exe
を削除して再度リンクするか、以下のようにして、configureからビルドしなおし。
LDFLAG=-Wl,--subsystem,windows ./configure --prefix=/usr --enable-ldap --disable-ipv6
sylpheed-2.0.0beta1起動。しかしメニューが英語。。
→LANG=ja sylpheed.exeとしても効果なし。
→gettextのインストールが中途半端だったため??
gettext-0.14.1-1をインストールし、glib/atk/pango/gtkをビルド・インストールしなおし。
sylpheed-2.0.0beta1もビルド・インストールしなおしで日本語表示されるようになった。
sylpheed-2.0.0beta1が日本語メニューで起動。
しかし「全般の設定」→「引用」の書式に入力した改行が正しく処理されない。(\nに変換されてしまう)
→libiconvの日本語対応にバグがあるためパッチをダウンロードしビルドしインストール。
makeの過程でエラーが出るが make -i で無視させる。
make -i installでインストールするがcygiconv-2.dllはcygwinのアプリがいずれかでも
起動しているとコピーできないので、make -i install後、エクスプローラなどでコピーする。
sylpheedからブラウザなど外部アプリケーションが起動できない。
→パス名の問題などがあるため「全般の設定」→「その他」の外部コマンドの指定を極力単純に
した方が良いらしい。シンボリックリンクなどで/usr/binに割り当て、外部コマンドの指定では
.exeの拡張子も省いた方が良いかも知れない。(例:firefox '%s'など)
sylpheed-2.0.0beta1のビルドのまとめ
・ldapサポートを使用する場合は、cygwinにminires-devel、openssl-develパッケージが
含まれているか確認。
・libiconvのバグ対策のためlibiconv-1.9.2のソースにパッチを当ててビルド・インストール。
GTK+のビルドのときにパッチをあててインストールすべきなのだが先にやるとGTK+のビルドが
うまく出来ない場合があったので、sylpheedのビルドの直前に行う。
・configureは以下のように実行。
LDFLAGS=-Wl,--subsystem,windows ./configure --prefix=/usr --enable-ldap --disable-ipv6