2004年10月4日星期一

在win32下编译QQ-0.3 (with gaim-1.0.0)

准备工具: mingw, msys
源代码: gaim-1.0.0, openq-0.3-p3
头/库文件: gtk2, aspell, gtkspell, nspr, nss, perl58, tcl
如果要制作安装包还得需要NSIS
另外需要几个补丁

[@more@]
编译方法:
1.从http://sourceforge.net/projects/tcl下载并安装msys_mingw,这个包包含了一个简单的 POSIX环境和Mingw GCC (gaim的网页上说要下载安装Cygwin,这并没有必要; 而且上述包已经自带了mingw).;

2.安装msys_mingw, 并运行msys.bat,这将打开一个rxvt会话窗口。

3.从http://sourceforge.net/projects/gaim下载gaim-1.0.0的源代码,解压到msys的某个目录(假定为~/wingaim_building/)
cd ~/wingaim_building
tar jxf /path/to/gaim-1.0.0.tar.bz2

4.按照http://gaim.sourceforge.net/win32/build.php上面的说明,下载gtk2, aspell, gtkspell, nspr, nss, perl58, tcl的头文件和库文件,解压到wingaim_building/win32-dev/;

5.因为OpenQ使用了regex库,需要到http://sourceforge.net/projects/gnuwin32下载regex-0.12-bin.zip和regex-0.12-lib.zip,前者留着最后运行时使用,后者也解压到wingaim_building/win32-dev/;

6.在gaim-1.0.0源代码目录中补上OpenQ-0.3-p3的源代码 (这部分代码是我从OpenQ-0.3-p3 的完整源代码中提取出来的,对应gaim-0.79)
cd ~/wingaim_buiding/gaim-1.0.0
tar zxvf /path/to/openq-0.3-p3-src.tar.gz

7.对gaim-1.0.0的代码打补丁[补丁]。主要包含两类补丁,一类是对gaim- 1.0.0源代码针对openq的少量修改
cd ~/wingaim_buiding/gaim-1.0.0
patch-p1 -b <>
patch -p1 -b <>
patch -p1 -b <>

8.另一类是补丁是因为: OpenQ-0.3是在gaim-0.79上发布的,而gaim-1.0发布时修改了一些插件接口,所以要做相应更改
cd ~/wingaim_buiding/gaim-1.0.0
patch -p1 -b <>

9.开始编译
如 果你有ActivePerl-5.8,修改gaim- 1.0.0/plugins/perl/common/Makefile.mingw 中PERL和EXTUTILS两项使之指向perl安装的位置;如果你没有ActivePerl-5.8, 需要将gaim-1.0.0/plugins/Makefile.mingw中与PERL_PLUGIN_LOADER相关的行删除

cd ~/wingaim_buiding/gaim-1.0.0
make -f Makefile.mingw

10.安装
制作安装包
cd ~/wingaim_buiding/gaim-1.0.0
make -f Makefile.mingw install
然 后需要加上OpenQ的数据文件,即人头图标、笑脸图标和IP数据,这些包含在OpenQ-0.3的源代码包中。如果你下载了我在前面提供的 data.zip,可以直接解压到win32-install-dir中; 另外OpenQ需要regex.dll拷贝到win32-install-dir目录
如果需要perl插件,将perl58.dll也拷贝过去

-------------------------------------------------------------
目前还存在的问题: 一点击 "获取信息", gaim就崩溃(cygwin版本就没有这个问题)

相关信息整理在:
http://bamanzi.inlsd.org/gnuwin32/openq/README.html

另外也试了一下cygwin版本移植,比较简单。问题是在一个版本的gtk2上编译后在另外一个版本上运行就会出错,根本启动不了。不知道怎么回事,所以patch也没敢往主页上放。