
GNOME2のコンパイルメモ(2005.12.26) Mingw編
今日(05/12/23)GNOMEのFTPでPlatformライブラリのバイナリ配布が始まってることを発見
さっそくインストール バイナリをとってきて やってみたが lcairoとかfreetypeとか必要なライブラリで足りないものがある。
そこで Glade for Windowsから2.8.8-rc2をとってきてその上からGNOME配布のバイナリを上書きした。
それでTegのコンパイルにチャレンジ
wis2_32.dllにfreeaddrinfoがないというえらーがでた。多分gonme_vfsのせいなのでコンパイルをやりなおす。
XPならちゃんと動くはずなんだけど(2000のws2_32.dllにはship6.dll系のエクスポートがないんだよねぇ)。
./configure --prefix=/gtk
ORBit2もだめらしい。。。。
ship6.dllの関数をロードするコードを毎回書くのにつかれたのでwship6_import.cというプログラムを書いてlibws2_32.aにつけたした。
$gcc -c wship6_import.c
$cp libws2_32.a libws2_32.a.orig
$ar -ru libws2_32.a wship6_import.o
そして winsock2.hの下のほうに以下のコードをつけたした
extern int load_wship6(void);
extern void free_wship6(void);
#define WSAStartup( a, b) ({ int ret; \
ret =
WSAStartup( a, b); \
load_wship6(); \
ret; \
})
#define WSACleanup() ({ \
int ret; \
free_wship6();
\
ret = WSACleanup(); \
ret; \
})
<ORBit2-2.13.2.tar.bz2>
$ LIBS=-lws2_32 ./configure --prefix=/i/gtk
$make
$make check で失敗する。
$make install
$rm /i/gtk/lib/*.la
不要なIPv6エントリーを削除する。
$mv libORBit-2.dll.a libORBit-2.dll.a.orig
$ pexports /i/gtk/bin/libORBit-2-0.dll> libORBit-2.def
$vi libORBit-2.def (不要なエントリの削除)
不要なIPv6エントリーを削除する。
DATAエントリの後ろにあるDATAを削除する。
$dlltool --def libORBit-2.def --dllname libORBit-2-0.dll --output-lib libORBit-2.dll.a
<gnome-vfs-2.12.2.pre-tml-20051126.tar.gz>
$LIBS=-lws2_32 ./configure --prefix=/i/gtk
$make
gnome-vfs-module-shared.c
141 #ifndef G_OS_WIN32
142 else if (S_ISLNK (statptr->st_mode))
143
file_info->type = GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK;
144 #endif
$make install
$rm /i/gtk/lib/*.la
不要なIPv6エントリーを削除する。
$mv libgnomevfs-2.dll.a libgnomevfs-2.dll.a.orig
$ pexports /i/gtk/bin/libgnomevfs-2-0.dll>libgnomevfs-2.def
$vi libgnomevfs-2.def(不要なエントリの削除)
不要なIPv6エントリーを削除する。
DATAエントリの後ろにあるDATAを削除する。
$dlltool --def libgnomevfs-2.def --dllname libgnomevfs-2-0.dll --output-lib libgnomevfs-2.dll.a
<gnome-vfs-2.12.2.pre-tml-20051126.tar.gz>
$LIBS=-lws2_32 ./configure --prefix=/i/gtk
これでめでたくTegがうごきましたとさ。
以下の内容は古いし全くの無駄です。下手に自分でコンパイルしたものよりバイナリを使ったほうが安心です。
GNOME2のコンパイルメモ(2005.12.16) Mingw編
使
用したGtkはこ
このgtk-win32-devel-2.8.8-rc2.exe
i:/gtkにいれた。
msysの/etc/fstabで/gtkにマウントした。
set PKG_CONFIG_PATH=/i/gtk/lib/pkgconfig
poptでエラーが出ることがおおいのでここのpopt(popt-1.10-tml-20050223.zip、popt-dev-1.10-tml-20050223.zip)を使うことにした。
Windows2000をIPv6対応にしてないとtegが動かなかったのでここを参考にIPv6化した。
libjpeg GnuWin32プロジェクトのjpeg-6b-4-bin.zip, jpeg-6b-4-lib.zipを使った。
<audiofile-0.2.6.tar.bz2>
$./configure --prefix=/gtk
libtoolがundefined reference to `WinMain@16というエラーをだすので他からlibtoolをとってくる。
cp (somewhere)/libtool .
$make
$make install
$rm /i/gtk/lib/*.la
<esound-0.2.36.tar..bz2>
こちらを見てください
<libgnomecanvas-2.12.0.tar.bz2>
$./configure --prefix=/gtk
$make
$make install
$rm /i/gtk/lib/*.la
<libIDL-0.8.6.tar.bz2>
$./configure --prefix=/gtk
$make
$make install
$rm /i/gtk/lib/*.la
<ORBit2-2.12.4.tar.bz2>
$./configure --prefix=/gtk
$make
$make check でエラーがでる。。。。
$make install
$rm /i/gtk/lib/*.la
<GConf-2.12.1.tar.bz2> tegが動かないので却下
$./configure --prefix=/gtk
$make
gconf/gconf-internals.c:148のS_ISLNKがみつからないそうなのでコメントアウトする。
#ifndef WIN32
if(!(test & GCONF_FILE_ISLINK) && S_ISLNK(s.st_mode))
return FALSE;
#endif
gconf/gconfd.c:846でcloselogがないというのでコメントアウトする
#ifndef WIN32
closelog ();
#endif
$make install
$rm /i/gtk/lib/*.la
<GConf-2.12.0.tar.bz2>
Changelogによると2.12.1でtmlがgconf/gconf-backend.cとgconf/gconf-sanity-check.cと
backends/markup-backend.cをいじってるので2.12.1からとってきて交換した。
$./configure --prefix=/gtk
$make
gconf/gconf-internals.cのS_ISLNKがない
148 #ifndef WIN32
149 if(!(test & GCONF_FILE_ISLINK) && S_ISLNK(s.st_mode))
150 return FALSE;
151 #endif
$make install
$rm /i/gtk/lib/*.la
<libbonobo-2.10.1.tar.bz2>
idlのコンパイルに失敗してるようだ。。。。
あきらめて
バイナリ(libbonobo-2.8.1-20050224.zip,、libbonobo-dev-2.8.1-20050224.zip)を使うことにした。
<gnome-mime-data-2.4.2.tar.bz2>
$./configure --prefix=/gtk
$make
$make install
$rm /i/gtk/lib/*.la
<gnome-vfs-2.13.1.tar.bz2>
$./configure --prefix=/gtk
$make
xdgmimecache.c
40 #ifndef WIN32
41 #include <netinet/in.h> /* for ntohl/ntohs */
42 #else
43 #include <winsock2.h>
44 #endif
xdgmimemagic.c で getc_unlockedが無いというのでgetcにしてみる。。。
42 #ifdef WIN32
43 # define getc_unlocked(f) getc(f)
44 #endif
gnome-vfs-module-shared.c
141 #ifndef WIN32
142 else if (S_ISLNK (statptr->st_mode))
143
file_info->type = GNOME_VFS_FILE_TYPE_SYMBOLIC_LINK;
144 #endif
gnome-vfs-resolve.c で getaddrinfo freeaddrinfo が無いという
config.hでHAVE_GETADDRINFOをコメントアウトする。
xdgmime.c で tettimeofdayが無いというので
387 #ifdef WIN32
388 #include <windows.h>
389 static int gettimeofday(struct timeval *tv, void *tz){
390 DWORD tick;
391 tick = GetTickCount();
392 tv->tv_sec = tick / 1000;
393 tv->tv_usec = (tick % 1000) *1000;
394 return 0;
395 }
396 #endif
test-long-cancel.cでエラーになるのでtestディレクトリをMakefileのSUBDIRからはずす
$make install
$rm /i/gtk/lib/*.la
<libgnome-2.12.0.1.tar.bz2>
$./configure --prefix=/gtk
$make
LIBADDに -lws2_32 をつける。
gnome-sound.cでfsyncがみつからないというのでコメントアウトする。
508 #ifndef WIN32
509 fsync (gnome_sound_connection);
510 #endif
writeがあるのでesd_ws_writeにする
455 #ifndef WIN32
456 write (gnome_sound_connection, s->data, size);
457 #else
458 esd_ws_write (gnome_sound_connection, s->data, size);
459 #endif
gnome-program.c でpoptHelpOptionsが無いというのでコメントアウトする。
1364 #ifndef WIN32
1365 includer.arg = poptHelpOptions;
1366 includer.descrip = _("Help options");
1367 g_array_append_val (program->_priv->top_options_table, includer);
1368 #endif
$make install
$rm /i/gtk/lib/*.la
<libbonoboui-2.10.1.tar.bz2>
$./configure --prefix=/gtk
$make
$make install
$rm /i/gtk/lib/*.la
<libgnomeui-2.12.0.tar.bz2>
$./configure --prefix=/gtk
$make
$make install
$rm /i/gtk/lib/*.la
<gail-1.8.8.tar.bz2>
$./configure --prefix=/gtk
$make
$make install
$rm /i/gtk/lib/*.la
アプリケーションのコンパイル
Tegからteg-0.11.1.tar.gzをとってきて、このパッチをあてる。
$LIBS=-lws2_32 ./configure --prefix=/gtk
libgnomeuiに必要なgnome-keyring-1.pcがないというので
libgnomeui-2.0.pcのRequireからはずしておく。
$make
config.h で HAVE_INET_NTOPを有効にする。
#define HAVE_INET_NTOP 1
Mingw/include/objidl.h:58でエラーになるので該当部分をコメントアウトしてからコンパイルする。
$make install
msysの環境変数のファイル区切り変換がはたらいてしまうため
GCONF_CONFIG_SOURCE=xml::/gtk/etc/gconf/gconf.xml.defaults /gtk/bin/gconftool-2--makefile-install-rule ./teg.schemas
で失敗するのでコマンドプロンプトから実行してやる。
>set GCONF_CONFIG_SOURCE=xml::/gtk/etc/gconf/gconf.xml.defaults
>gconftool-2 --makefile-install-rule teg.schemas
できたらMkakefileの該当行をコメントアウトする
768 #install-data-local:
769
#
GCONF_CONFIG_SOURCE=$(GCONF_CONFIG_SOURCE) $(GCONFTOOL)
--makefile-install-rule $(srcdir)/$(schema_DATA)

戻る
このHPの内容に問題等
ありましたらsけいし(skeishi@yahoo.co.jp)までメールを下さい。
