尝试使用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的头文件去哪里找。参见 关于头文件说明
#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
然后查到可能是因为共享库设置的问题: