參與 XMPP 協議項目,需 C 庫支持。iksemel 過於底層,libstrophe 缺文檔,最終選 loudmouth 1.4.3。記錄踩坑過程。
核心 RFC:RFC3920 (XMPP-CORE)、RFC3921 (XMPP-IM)。推薦論文 Extensible Messaging and Presence Protocol (Mikko Laukkanen)。辦公室有 XMPP Server,或用 GTalk 測試。
標準三部曲:./configure && make && make install。
./configure 報 glib 版本過低。解決:VMware 裝 Ubuntu 9.04,編譯安裝 glib 2.13 到 /usr(./configure --prefix=/usr)。建議:舊系統 glib 升級麻煩,不如重裝新發行版。
自帶 examples 複雜(bash 包裝、自動生成 Makefile)。自寫 test.c:
#include <loudmouth/loudmouth.h>
int main(void) { return 0; }
編譯需指定頭文件與庫路徑(含 glib):
project = test
$(project) : $(project).c
gcc -o $@ -I/usr/local/include/loudmouth-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -L/usr/local/lib -lloudmouth-1 $<
運行報 libloudmouth-1.so.0: cannot open shared object file,屬 ldconfig 問題:
echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig
即可運行。
vim+ctags+tlist。