Libosip/libeXosip 交叉编译以及在DM6467的使用
1、 最新libosip/libeXosip的下载地址:
libosip2-4.0.0.tar.gz http://www.antisip.com/download/exosip2/
libeXosip2-4.0.0.tar.gz http://www.antisip.com/download/exosip2/
SIP协议解析,基本原理等建议CSDN搜索,有较多热心网友文章可以参考,经验宝贵。
2、 设置好交叉编译环境:
创建目录/home/user_xxx/arm_target, /home/user_xxx/build, /home/user_xxx/sources,将全部压缩包放到/home/user_xxx/sources下,解压:
tar –xvf libosip2-4.0.0.tar.gz
tar –xvf libeXosip2-4.0.0.tar.gz
3、 交叉编译libosip2:
1) mkdir /home/user_xxx/build/libosip2
2) cd /home/user_xxx/build/libosip2
下一步很重要,关系到编译出的库是否能在你的目标板使用,红色部分为目标板使用的交叉编译器,注意路径要正确。
3) ../../sources/libosip2-4.0.0/configure --prefix=/home/user_xxx/arm_target --enable-shared --disable-static
4) make
5)make install
6)编译成功后在/home/user_xxx/arm_target/lib下能够看到你需要的库。
4、 交叉编译libeXosip2:
一定要先编译libosip2库,libeXosip2是对libosip2的进一步封装和扩展,如果先编译libeXosip2会编译失败。
1) mkdir /home/user_xxx/build/libeXosip2
2) cd /home/user_xxx/build/libeXosip2
3) ../../sources/libeXosip2-4.0.0/configure --prefix=/home/user_xxx/arm_target --enable-shared --disable-static PKG_CONFIG_PATH=/home/user_xxx/arm_target/lib/pkgconfig/
4) make
5) make install
6) 一定要选择相同的版本,否则编译出错。
5、 编译结果:
6、 目标板Makefile中依赖共享库的项目的编译:
参考附录。
7、 验证osip2/eXosip2库是否可用:
测试osip2/eXosip2库是否可用,不需要很复杂的代码,我们这里只调用eXosip_init()就可以检验以上操作是否正确。
1)头文件拷贝合适地址
2)在工程中方便的地方加入如下代码,
#include"eXosip2/eXosip2.h"
#include"eXosip2/eX_setup.h"
……
……
struct eXosip_t*excontext = NULL;
excontext = (structeXosip_t *)malloc(sizeof(struct eXosip_t));
if(eXosip_init(excontext)!= 0)
{
printf("eXosip initerr\n");
}
else
{
printf("eXosip initOK\n");
}
如果步骤6正确的话,编译通过是没有问题的。
8、 下载到目标板运行:
编译通过了是不是就能运行了呢?那可不一定,开发的道路不会一帆风顺,也许噩梦才刚开始。
1) 把第5步的编译成果,拷贝到目标板/usr/lib/下
cp –rf libosip2.* libosipparser2.* libeXosip2.* /usr/lib/
2) 应用走起: ./xxxxx &
此时报错了:# ./xxxxx: error while loading shared libraries:libssl.so.0.9.8: cannot open shared object file: No such file or directory
报错显示找不到libssl.so.0.9.8的库,也不知道是什么东西,在你的编译服务器里找,但是注意也一定是交叉编译后的库,否则没法用。DM6467就比较方便,在/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/target/usr/lib/libssl.so.0.9.8能找到,拷贝到/usr/lib/
3) 运行应用,还会有./xxxxx: error while loading sharedlibraries: libcrypto.so.0.9.8: cannot open shared object file: No such file or directory,同上找到后拷贝到/usr/lib
4) 运行成功后,有打印:
eXosip init OK
证明libosip2, libeXosip2能够使用了,完成验证。
9、验证libosip2, libeXosip2后,就可以进行下面的开发了。
附录:
Makefile中的共享库安装:
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
bindir=${exec_prefix}/bin
install_lib:
install -d $(libdir)
-install -m 755 libxx.so.10.0.0 $(libdir)
-ln -f -s $(libdir)/libxx.so.10.0.0 $(libdir)/libxx.so.10.0
-ln -f -s $(libdir)/libxx.so.10.0 $(libdir)/libxx.so.10
-ldconfig $(libdir)
Makefile中依赖共享库的项目的编译:
$(LD) -o $@ prjdemo.o -L$(libdir) -lxx
参考此文章使用pkgconfig来使用共享库:
http://blog.csdn.net/mantis_1984/article/details/52847435