在Windows下编译pidgin
建立Mingw + MSYS编译环境
网络上方法很多,笔者经过试验,选择了一个比较简单方便的安装方法。
一、到下面的网站下载MingW安装文件
http://www.tdragon.net/recentgcc/
TDM/MinGW Installer
不用MingW网站上的安装文件,是因为MingW的安装程序无法手工选择速度较快的sf.net下载网站。
安装时,先选择检查更新,然后选择安装部件,因为目的仅仅是编译pidgin,所以只选择了TDM recommanded C/C++,选择下载的镜像服务器,以大陆的网络环境,通常以选择北美的服务器速度较快。
安装位置,本人选择在:D:/MINGW
二、下载安装msys和msysDTK
google MSYS-1.0.10.exe
得到下载地址:
http://sourceforge.net/project/downloading.php?groupname=mingw&filename=MSYS-1.0.10.exe
google msysDTK-1.0.1.exe
得到下载地址:
http://sourceforge.net/project/downloading.php?groupname=mingw&filename=msysDTK-1.0.1.exe
下载完成后,2个文件都安装到安装到目录:D:/msys/1.0
msys安装到最后会出现一个Dos窗口,都选择y,当询问 MinGW 的安装路径时:
Please answer the following in the form of c:/msys Where is your MinGW installation?
输入MinGW的安装路径D:/MinGW
注意:
切不可把MSYS安装到D:/MINGW,否则,编译时会出现错误:
gcc.exe: no input files
而无法进行编译工作。
三、修改windows环境变量
进入“控制面板-系统-高级-环境变量-系统变量”,找到PATH一栏,点选“编辑”,在末尾加入以下新路径
d:/mingw/bin;D:/msys/1.0/bin;
编译pidgin
一、下载pidgin的源代码和编译所需要的各种库文件
主要参照以下pidgin文档
http://developer.pidgin.im/wiki/BuildingWinPidgin
先建立一个pidgin开发目录,如:
F:/pidgin
将pidgin的源文件,如pidgin-2.5.2.tar.bz2,存入F:/pidgin。
以下库文件存入 F:/pidgin/win32-dev 目录:
GTK+,gtk-dev-2.6.10-rev-a.tar.gz
Libxml2,libxml2-2.6.30.tar.gz
Perl 5.10,perl_5-10-0.tar.gz
Tcl 8.4.5,tcl-8.4.5.tar.gz
GtkSpell / Aspell,aspell-dev-0-50-3-3.zip,gtkspell-2.0.11-daa1.tar.gz
Mozilla NSS,Network Security Services (NSS) ,Netscape Portable Runtime (NSPR)
SILC Toolkit,silc-toolkit-1.1.7.tar.gz
Meanwhile,meanwhile-1.0.2_daa1-win32.zip
Bonjour SDK,the Apple developer website,注意安装目录一定要修改为 F:/pidgin/win32-dev/Bonjour_SDK
Cyrus SASL,cyrus-sasl-2.1.22-daa1.zip
安装后的目录结构如下图:
F:.
└─pidgin
├─pidgin-2.5.2
└─win32-dev
├─aspell-dev-0-50-3-3
├─cyrus-sasl-2.1.22-daa1
├─gtk_2_0
├─gtkspell-2.0.11-daa1
├─libxml2-2.6.30
├─meanwhile-1.0.2_daa1
├─nspr-4.6.4
├─nss-3.11.4
├─perl-5.10.0
├─silc-toolkit-1.1.7
├─tcl-8.4.5
└─Bonjour_SDK
二、开始编译
进入DOS命令窗口,切换到目录:
F:/pidgin/pidgin-2.5.1
输入命令并按回车执行:
make -f Makefile.mingw
如果没有安装perl和tcl,不需要按网站上说的那样去下载安装,直接修改:
libpurple/plugins/Makefile.mingw
pidgin/plugins/Makefile.mingw
用 # 注释掉perl和tcl相关的行就可以继续编译了
如果安装了perl,参照说明,还有一个要注意的地方,就是Perl的安装目录,默认是安装在C:/Perl目录中,在cygwin环境中的目录是/cygwin/c/Perl,而MSYS中是没有映射/cygwin目录的,开始的时候使用ln将安装好的Perl连接到/cygwin/c中,发现由于WIN下没有文件LINK,MSYS是把文件直接考到自己的安装目录下,这个方法显然是不行的。后来注意到说明里面有一句“If you install Perl anywhere else, you will need to override the PERL and EXTUTILS variables in your pidgin/local.mak file.” 在pidgin目录中搜索一下PERL和EXTUTILS的写法,创建一个local.mak,内容如下:
PERL := /c/Perl/bin/perl
EXTUTILS := c:/perl/lib/ExtUtils
编译中的一些问题和选项
1. windres的一个小问题
当编译到pidgin/win32/pidgin_dll_rc.rc和pidgin_exe_rc.rc时,编译器提示:
windress无法打开'pixmap/tray/16/',访问权限错误。
检查pidgin_exe_rc.rc可以发现以下2条语句:
#define PIXMAPDIR "pixmaps/"
PIDGIN_ICON ICON PIXMAPDIR "pidgin.ico"
怀疑所用的windres版本不支持这种dir定义方式,改成:
PIDGIN_ICON ICON "pixmaps/pidgin.ico"
同理修改pidgin_dll_rc.rc,修改ICO路径修改为:
PIDGIN_TRAY_AVAILABLE_4BIT ICON "pixmaps/tray/16/available_4bit.ico"
PIDGIN_TRAY_AWAY_4BIT ICON "pixmaps/tray/16/away_4bit.ico"
PIDGIN_TRAY_BUSY_4BIT ICON "pixmaps/tray/16/busy_4bit.ico"
PIDGIN_TRAY_XA_4BIT ICON "pixmaps/tray/16/extended-away_4bit.ico"
PIDGIN_TRAY_OFFLINE_4BIT ICON "pixmaps/tray/16/offline_4bit.ico"
PIDGIN_TRAY_CONNECTING_4BIT ICON "pixmaps/tray/16/connecting_4bit.ico"
PIDGIN_TRAY_PENDING_4BIT ICON "pixmaps/tray/16/message_4bit.ico"
PIDGIN_TRAY_INVISIBLE_4BIT ICON "pixmaps/tray/16/invisible_4bit.ico"
编译通过.
2. 编译debug版本
修改config.h,增加一行:
#define DEBUG
重新编译。
3. 安装文件
执行命令
make -f Makefile.mingw install
自动生成目录和安装文件
win32-install-dir