Skip to content

Install From Source

xiehuc edited this page Dec 3, 2013 · 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

编译安装

$ 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

请确保自己真正理解了每步的含义,如果不能,请自行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用户去自己编译安装libmozjs185,但是又搞不定的,我在这里强调,mozjs185包是可选的,也就是说不用它也能正常编译,正常使用.这个时候会直接使用lwqq_util_hashQ函数来做hash解析,如果使用了mozjs185则会自动从我的sae站点上下载hash.js提供解析.

这里需要说明的是,为什么要使用mozjs185,是为了不用重新编译就更新hash解析, 解析hash函数有两种方式,一种是将js翻译成c代码嵌入源代码中,另外一种是直接依赖js引擎mozjs,然后从webqq的js代码中趴下来hash相关的部分解析. 因为在一段时间的时候腾讯发飙,经常更新hash函数,但是pidgin-lwqq依赖的是传统的二进制发行方式,无法应对网络的快速变化,所以我使用了mozjs包来实现不用重新编译就能够相对快速的应对hash的变化,前提是任何人(比如我)从webqq的js中抽取hash相关的代码,放在发布页(比如sae)上,这样所有pidgin-lwqq用户就可以自动下载然后进行hash了.

但是现在hash已经稳定了,所以我再次将js转换成c代码放在了lwqq_util_hashQ函数中,如果没有mozjs的支持则会使用该函数.唯一的不同是如果下次hash又更新了,会提示"hash函数更新"无法登录.需要等待有人将js翻译成c然后提交,我再接受patch,然后再自己重新编译源代码或者交给其它发行版的维护者编译二进制包.经过这样一个很长的周期.

而如果是使用了mozjs了,那么只要有人把js抽出来放在发布页上(可以是我自己的,也可以是第三方发布页,需要在数据库中指定),就可以重新登录了,其周期大大小于前者,基本上半天时间就可以完成.并且对于一般用户是几乎透明的.

说了这么多,就是CentOS用户完全没有必要去安装mozjs185包

Build On Mac OSX

  1. 下载adium的源代码并且使用xcodebuild -configuration Debug来编译adium
  2. 使用brew安装sqlite3,zlib,curl,spidermonkey的开发包brew install sqlite3 zlib curl spidermonkey
  3. 用xcode打开pidgin-lwqq/adium/adium-lwqq.xcodeproj然后编译。目录如下:
    ├── 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目录下.

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`的绝对路径 -DINST_ZIP=On
make

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

install

将libwebqq.dll复制到pidgin程序目录下plugins文件夹,将libcurl.dll,sqlite3.dll,zlib1.dll复制到pidgin程序目录下, 执行pidgin就可以在协议中看到WebQQ协议了.

Clone this wiki locally