嘗試使用libosip2,安裝比較簡單,按照自帶的help文檔裡面的操作進行即可。
$>mkdir linux-build
$>cd linux-build
$>../libosip2-2.2.0/configure
$>make (最後2步要在管理員權限下執行)
# make install
完成之後,會在/usr/local/lib路徑下生成一些lioosipXXX.so的文件,在/usr/local/include下生成關於osip的頭文件。
為了測試安裝是否正確,在eclipse下建了個測試項目,寫了很簡單的代碼:
#include <sys/time.h>//不加的話,編譯時會報錯,可能osip依賴於time.h
#include <osip2/osip.h>
//之所以能找到/usr/local/include下關於osip的頭文件,是因為eclipse默認把/usr/local/include 放到Include directories裡面了。在eclipse的項目屬性-->C++ General-->Path and symbols -->Include裡面可以看到。如果自己寫makefile文件的話,要加上-I 選項,表示程序裡include的頭文件去哪裡找。參見 http://www.linuxidc.com/Linux/2011-05/35444.htm 關於頭文件說明
#include <iostream>
using namespace std;
int main()
{
int i;
osip_t *osip;
i = osip_init(&osip);
if(i != 0)
cout << "error" << endl;
cout << "ok" << endl;
return 0;
}
並且在eclipse的項目屬性-->C/C++ Build-->Settings-->Tool settings-->GCC C++ Linker-->Libraries加上-lpthread -losip2的選項。
編譯鏈接都沒有問題,運行時報錯:
error while loading shared libraries: libosip2.so.4: cannot open shared object file: No such file or directory
然後查到可能是因為共享庫設置的問題: