Skip to content

Install From Source

xiehuc edited this page Jul 15, 2015 · 29 revisions

Build On Linux

安装依赖

从0.3.0版本开始,pidgin-lwqq和lwqq库已经完全分离,但是lwqq的API依然经常改动. 首先需要从 lwqq 按照wiki编译安装

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

gcc g++ make cmake pkg-config glib(开发包) libpurple(开发包) lwqq(源代码编译)

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

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

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

$ sudo apt-get install build-essential cmake pkg-config libglib2.0-dev \
  libpurple-dev 

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

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

$ sudo yum install gcc gcc-c++ make cmake pkgconfig glib-devel libpurple-devel

Gentoo Users

请添加 gentoo-zh overlay

$ layman -a gentoo-zh

然后直接全自动编译:

$ emerge pidgin-lwqq 

编译安装

安装master分支,可以用git clone,或者是下载源码zip包

$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

安装dev分支,可以从 dev 下载, 或者使用下面的命令

...
$ git clone https://github.com/xiehuc/pidgin-lwqq.git
$ git checkout -b dev origin/dev
...

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

选项

由于把大部分功能都移到了lwqq中了,所以需要仔细阅读下lwqq的编译选项 编译成功以后会出现如下的提示:需要特别注意

===============pidgin-lwqq flags===============
-- Native Language Support : true
-- Install Path            : /usr/lib/purple-2
===============================================
  • Native Laguage Support: 编译多语言支持,会自动检测是否有gettext环境并自动启用,可以通过 -DNLS=Off来强制关闭
  • Install Path: 自动检测purple-2的安装目录。无需再使用CMAKE_INSTALL_PREFIX

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

常见问题

  1. 编译时提示找不到lwqq
  2. 打开pidgin找不到webqq协议

Build On Mac OSX

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

Build On Windows

prepare

  1. 参考lwqq/wiki配置好编译环境
  2. 下载lwqq并放在lwqq_root/lwqq目录下并编译
    • 新建的文件夹必须为build,查找路径是写死了的
    • 使用 cmake .. -G "MSYS Makefiles" -DWIN32_LIBS_DIR=... -DWITH_LIBUV=Off -DWITH_LIBEV=Off 编译.因为异步直接使用pidgin内置的支持来完成
  3. 这里下载pidgin的源代码,并且解压缩到lwqq_root/pidgin目录下,根据BuildWinPidgin编译Windows版本的Pidgin(其实主要是为了获取libpurple)
    • 一些包的名字有问题,应该是源代码不是最新的缘故:nss的那个包文件夹名字为nss-3.13.6-nspr-4.9.2以及pidgin-inst-deps-20120910
    • 在win8下编译,会因为wstcpip和winsock的冲突,导致无法编译,需要调整include的顺序:将 #include "internal.h" 放在 #include <windows.h> 前面,在以下文件中
      • pidgin/win32/gtkdocklet-win32.c

      • pidgin/win32/gtkwin32dep.c

      • pidgin/win32/wspell.c 在 #include <windows.h> 前面添加 #include "internal.h"

      • pidgin/plugins/win32/winprefs/winprefs.c 将 #include "internal.h" 放在 #include <gtk/gdkwin32.h> 前面

      • 为了方便可以直接将下面的文本复制为patch.sh,放在pidgin目录下并用 sh patch.sh 来自动替换:

        sed -i '0,/^#include.*/s//#include "internal.h"\n&/' \
         pidgin/win32/gtkdocklet-win32.c \
         pidgin/win32/gtkwin32dep.c \
         pidgin/win32/wspell.c \
         pidgin/plugins/win32/winprefs/winprefs.c
        
    • 这里下载并解压缩到win32-dev中
    • 使用 make -f Makefile.mingw install 编译
  4. 在第2步中就会获取glib的依赖,所以这里不用再做什么.
  5. 这里下载spider monkey的mingw32预编译好的包,解压缩到win32-dev/js-1.8.5-mingw32目录下.
  6. 需要使用在上面提供的依赖的压缩包文件,如果是随意复制其它来源的dll(如pthreadGC2.dll会导致这些dll依赖libgccsw***.dll 从而使得静态链接的libwebqq.dll失效,直接导致了pidgin退出的时候出现异常错误)

prepare directly

也可以直接下载整理好的傻瓜包中的pidgin-dependencies.7z和pidgin-lwqq-dependencies.7z直接解压缩到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协议了。