linux下安装loudmouth库中碰到的问题 & 解决方法

最近在参与一个xmpp协议相关的项目,要找一个c下面的xmpp的库帮助开发。在xmpp.org上c库少的可怜。iksemel太过底层,就是一个xml的解析器,只不过是支持jabber而已,网络连接、登录都是要自己编写的;libstrophe找不到手册,唯一找到的好像是给javascript的;最后也就看到了loudmouth这个家伙。现在的版本是1.4.3。
 
原来没有做过这种层次的工作,这是第一次,过程中必然会碰到一些问题。我就写写我的学习过程以及碰到问题,当然还有解决办法了!
 
1.学习xmpp

首先是要学习xmpp协议,主要是RFC3920[XMPP-CORE]和RFC3921[XMPP-IM]这两个。老板推荐的xmpp的论文觉得的确很好:
 
<Extensible Messaging and Presence Protocol>    
by Mikko Laukkanen
 
基本上看了这篇论文就对xmpp有一个比较好的认识了。
我们办公室的服务器就有xmpp的server,所以可以直接找一个client登录看看,没有的话gtalk就是基于xmpp的拉。(应该是吧)
 
2.loudmouth库的编译和安装

安装过程主要就是linux三部曲
./configure 
make 
make install


但是我在./configure的时候出问题了,报错说glib版本过低。最后我是在vmware里装了一个ubuntu9.04,后安装glib2.13到/usr目录,即可编译通过。这里安装过程我写的比较简单,掠过了几个地方,比如,如果以前有过glib,但是版本比较低的话,我建议如果可以,重新安装一个比较新版本的linux会比较好,因为我曾经在rh9上碰到了glib版本太低的问题,当时花了一些时间想对glib升级,最后还是重装了一个ubuntu才解决。记得最好是装在/usr下,也就是在glib的./configure时加入参数--prefix=/usr。
 
3.loudmouth的调用

这样就ok了,可以直接到examples目录下跑跑测试程序。但是这里发现了一个问题,就是库自带的测试程序都非常奇怪,一个个的bash程序,然后里边再ooxx,总之examples下的makefile非常复杂,是自动生成的。
 
这里我碰到了一个问题,就是我们自己的程序里如何调用loudmouth的函数呢?
写一个test.c包含一下试试:
// test.c
#include<loudmouth/loudmouth.h> 
int main(void){ 
                return 0; 
}

这个直接gcc是不行的,要加一些目录包含的参数(这里注意,需要loudmouth自己的目录,还需要glib的)。我写了一个简单的Makefile:
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 $<

放在test.c目录下,make就可以了。
这还不行,运行的时候还会发现下面的错误:
error while loading shared libraries: libloudmouth-1.so.0: cannot open shared object file: No such file or directory
 
这是ldconfig的问题,具体的请google ldconfig。通过以下命令解决之:
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
这样就可以运行了。
 
4.其他

关于loudmouth的具体使用,在它的包里边有详细的html格式的手册,觉得好像还是挺好用的。



补充一下: 发现了一个很好的东西:pkg-config( http://pkg-config.freedesktop.org/wiki/
这样关于loudmouth编译的方法就可以这样写了:
gcc -o test `pkg-config --libs --cflags loudmouth-1.0` test.c
loudmouth的包信息中会自动将glib包含进去的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值