Skip to content

Install From Source

jiuerd edited this page Feb 10, 2014 · 29 revisions

Build On Linux

编译依赖

安装下列软件包(注意你的发行版可能使用与此不同的包名)

gcc g++ make cmake pkg-config glib(开发包) curl(开发包) libpurple(开发包) sqlite3(开发包) zlib(开发包) 

可选包(通常提供了更好的性能,推荐安装)

js(开发包) libev(开发包)

在 Ubuntu/Debian 上,可以用以下命令安装

$ sudo apt-get install build-essential cmake pkg-config libglib2.0-dev libcurl4-openssl-dev\
  libpurple-dev libsqlite3-dev libmozjs185-dev libev-dev

注意编译需要 libpurple>=2.8。推荐使用 curl>=7.22.0,否则图片收发可能有问题。

在 Fedora 上,可以用以下命令安装

$ sudo yum install gcc gcc-c++ make cmake pkgconfig glib-devel libcurl-devel libpurple-devel\
  sqlite-devel zlib-devel js-devel

编译安装

安装master分支

$ git clone https://github.com/xiehuc/pidgin-lwqq.git
$ cd pidgin-lwqq
$ git submodule init
$ git submodule update
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

安装dev分支

...
$ cd pidgin-lwqq
$ git checkout dev
$ git submodule init
...

请确保自己真正理解了每步的含义,如果不能,请自行google。

选项

编译成功以后会出现如下的提示:需要特别注意

================lwqq flags=====================
-- With Libev (Option)     : Off
===============================================

===============pidgin-lwqq flags===============
-- With Mozjs (Option)     : Off
-- Native Language Support : true
-- Install Path            : /usr/lib/purple-2
===============================================
  • With Libev: 可以减少UI的卡顿问题,会自动检测是否安装了libev-dev包来自动启用。 因为一些系统如ubuntu的libcurl的dns查询是同步方式的,所以在网络环境差的时候容易 卡UI.libev能够有效的解决这种问题.但是鉴于平时测定单纯用libpurple的eventloop的效能也不算太差,所以libev使 用可选方式支持.
  • With Mozjs: 提供javascript解析hash.js的能力,能够快速应对webqq更新js的情况而无需重新编译。(不过最近webqq更新js的频率变低了),支持mozjs185和mozjs17(对于gentoo)两种,默认以mozjs185优先
  • Native Laguage Support: 编译多语言支持,会自动检测是否有gettext环境并自动启用,可以通过 -DNLS=Off来强制关闭
  • Install Path: 自动检测purple-2的安装目录。无需再使用CMAKE_INSTALL_PREFIX

可以使用cmake .. -DWITH_{...}来强制打开关闭特性

For CentOS Users

由于Centos上面的很多包都太老了,导致没有mozjs185,这里需要说明的是,这里需要说明的是,我只能尽量去向后兼容,对于做到对centos现有的兼容程度已经付出了很多的劳动,而且始终没有办法避免包太老的问题,我已经决定不再回复centos编译问题提出的任何issue,请自行解决,现在还有很多人没有明白mozjs185是怎么回事:

  1. mozjs185包是可选
  2. 开启了mozjs185包的好处是以后在webqq更换了hash校验之后能很快重新登录,并且是对用户透明的.因为这里需要别人先发issue说hash函数更新了,我去从官网的js中把hash相关的趴下来,放到sae中,然后其它用户在下次登录的时候会自动从sae下载hash.js从而顺利验证.
  3. 不开启mozjs185不影响平时的使用,但是在webqq更换了hash校验之后就会提示错误,并且只有等到我把js翻译成c语言,然后放到github上,再由自己重新编译源代码或者是等待别人打包好的二进制包.所以周期比较长
  4. 把js翻译成c的工作我以后会越来越少做,因为我相当于是义务性质的工作,想翻译或者是不想翻译是我的事,因为我已经提供了更好的解决方案,至于自己因为包太老的原因我只能表示我已经尽力的,翻译js的工作是重复的,多余的.如果是你觉得我十分的懒惰,或者是性格恶劣或者是不够意思,我想说"这里是开放的平台",请不要把压力都集中在某一个人上面,因为完全可以提交patch,这个项目开了这么久了也见多少人pull request,这个开源的气氛完全没有.

其实我还有很多想说的,但是我说了结果肯定会引起不愉快的,所以我还是先闭口吧.

我随便找了一个centos可用的mozjs,可以用下面的方法安装

#yum localinstall http://packages.squiz.net/centos/5/x86_64/mozjs17-devel-17.0.0-4.el5.centos-squiz.x86_64.rpm http://packages.squiz.net/centos/5/x86_64/mozjs17-17.0.0-4.el5.centos-squiz.x86_64.rpm

其它的步骤就和上面的一样了.

另外,可能centos上需要make两次才能编译,这个可能是cmake2.6的问题,cmake2.6实在是太老了,我在其它系统上面也没有遇到问题,所以就没有去排查了.应该不是我配置写得不好的原因.

Build On Mac OSX

  1. 下载adium的源代码并且使用xcodebuild -configuration Debug来编译adium
  2. 使用brew安装sqlite3,zlib,curl,spidermonkey的开发包brew install sqlite3 zlib curl spidermonkey
  3. 适用cmake生成config.h,步骤内容同上面Linux部分,除了 makemake install 两步
  4. 用xcode打开pidgin-lwqq/adium/adium-lwqq.xcodeproj然后编译。保持adium源码的目录和pidgin-lwqq的源码目录如下的结构:
    ├── adium
    └── pidgin-lwqq

Build On Windows

prepare

  1. 参考lwqq/wiki配置好编译环境
  2. 这里下载pidgin的源代码,并且解压缩到lwqq_root/pidgin目录下,根据BuildWinPidgin编译Windows版本的Pidgin(其实主要是为了获取libpurple) 编译完成之后把该文件夹复制到lwqq_root/win32-dev/pidgin目录下.
    • bonjourd的编译依赖获取太麻烦了,所以我们这里直接修改pidgin/libpurple/protocols/Makefile.mingw.删除bonjour.
    • 一些包的名字有问题,应该是源代码不是最新的缘故:nss的那个包文件夹名字为nss-3.13.6-nspr-4.9.2以及pidgin-inst-deps-20120910
    • 在win8下编译,会因为wstcpip和winsock的冲突,导致无法编译,需要调整include的顺序。
    • 这里下载并解压缩到win32-dev中
  3. 在第2步中就会获取glib的依赖,所以这里不用再做什么.
  4. 这里下载spider monkey的mingw32预编译好的包,解压缩到win32-dev/js-1.8.5-mingw32目录下.
  5. 需要使用在上面提供的依赖的压缩包文件,如果是随意复制其它来源的dll(如pthreadGC2.dll会导致这些dll依赖libgccsw***.dll 从而使得静态链接的libwebqq.dll失效,直接导致了pidgin退出的时候出现异常错误)

prepare directly

也可以直接下载整理好的pidgin-dependenciespidgin-lwqq-dependencies直接解压缩到win32-dev中,pidgin源代码中需要修改的文件放在了pidgin-dependencies/pidgin目录下了。

build

打开一个MinGW Shell,进入lwqq_root目录,输入

git clone https://github.com/xiehuc/pidgin-lwqq.git
git submodule init
git submodule update
cd pidgin-lwqq
mkdir build;cd build
cmake .. -G "MSYS Makefiles" -DWIN32_LIBS_DIR=`lwqq_root/win32-dev`的绝对路径 -DPACKAGE=ZIP
make

最后,就可以在build/src目录下获得libwebqq.dll. PACKAGE选项可以自动打包成zip文件,使用make package之后可以在build目录下获得zip包

install

将制作的zip包解压缩到pidgin的根目录即可。执行pidgin就可以在协议中看到WebQQ协议了。

Clone this wiki locally