我使用的版本是osip2-2.2.0,从网上下载了libosip2-2.2.0.tar.gz压缩包后 执行tar -xvzf libosip2-2.2.0.tar.gz 解压缩包,按照解开目录里面的安装说明执行以下操作:
$>mkdir linux-build
$>cd linux-build
$>../libosip2-2.2.0/configure
$>make (最后2步要在管理员权限下执行)
# make install
安装过程中可能会出现很多warning,有很多是因为安装包中有许多兼顾其它操作系统而建立的指令造成的不用去理会。
安装结束后检查linux-build目录会看到里面生成了许多目录和文件。
安装说明到此就完了,可是总觉得哪里有问题,生成的库和头文件都在哪里呢?
找个安装包中的测试程序,按照最直接的命令gcc xxx.c -o xxx编译一下,结果提示找不到osip的头文件,检查了下这个测试程序,看到里面头文件是这么调用的 #include <osip2/internal.h>,照着别人的指点找到/usr/include ,可是里面并没有osip2这个目录,在/usr/lib 里也没有找到生成的libosip2的人和库文件。
难道编译没有成功?在别人的帮助下再检查整个安装过程,在其它的说明文件里发现CFLAGS="-I/usr/local/include/" ,检查/usr/local/include/ 发现了osip2的目录,目录里面是相应的头文件。再顺便看下/usr/local/lib/目录,发现编译好的库文件都在这里。接着我做的是把/usr/local/include/ 目录下生成的有关sip头文件的整个目录都挪至/usr/lib/ 下,在尝试编译测试程序,现在的出错提示会变成找不到osip中的某个函数定义,看来头文件加载的过程没有问题,剩下的就是链接问题,照着别人的指点调整了下编译参数,制定链接库德位置
gcc xxx.c -L /usr/local/lib -losip2 -o xxx 理论上就没有问题了,但是因为osip的库中可能会调用线程,所以在我例子里会提示找不到有关线程的函数,所以在最后编译时要加上 -lpthread 调用线程的库,最后完整编译指令是 gcc xxx.c -L /usr/local/lib -losip2 -lpthread -o xxx 编译成功,没有任何再出现错误提示。
另,最后写这篇安装说明时候检查了下安装说明(osip2中的安装说明好多阿,同样在linux下方法还都略为有点区别,搞得我这个新手很晕>_<),发现在某一个说明文件最后有这样的说明:
configure --prefix=/your/local ==> install in '$prefix' (default is /usr/local)
看来是如果在安装过程中执行带 --prefix=/your/local 的configure 就可以在指定的目录下生成头文件,但是 我现在还没有来得及测试,呵呵。
感谢在安装过程中帮助我的雷,希望我的安装体会能给和我一样的初学者带来帮助和借鉴。