程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> linux下安裝loudmouth庫中碰到的問題 & 解決方法

linux下安裝loudmouth庫中碰到的問題 & 解決方法

編輯:關於C語言

最近在參與一個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格式的手冊,覺得好像還是挺好用的。   這裡推薦大家一個很好的code編輯和閱讀的軟件,source insight,除了編輯方式上我覺得比vim差一些,其他的覺得都很好用,個人覺得比我使用vim+ctags+tlist方便一些。當然,我根本沒怎麼用vim編過大程序,更別提我用的方法上可能有很多欠缺……總之大家可以試試這個insight就是了。它本身就可以查看函數的調用情況等等地方,還是很方便的)   之後可能需要將這個東西放到arm上跑……現在還沒概念,不知道glib會不會又給我找事……有不祥的預感啊,不過以後再說吧。   2009.7.7 by Peter.Xu

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved