Libosip/libeXosip 交叉编译以及在DM6467的使用

时间:2021-08-25 08:47:03

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、  编译结果:

   Libosip/libeXosip 交叉编译以及在DM6467的使用

 

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