交叉编译ortp、osip2、eXosip2、mediastreamer2及其附带的库实现SIP软电话

经过两周的交叉编译,编写源码,终于实现了在ARM开发板上的软电话。下面记录各个库的交叉编译过程,有可能还会有漏掉一些库,也有可能有些库不需要。由于编译完成几周之后才想起有做一些记录,难免有些不准确以及不全。这交叉编译的这两周中,在网上找了好多资料,现在回头看看好像也都没有记录。罪过!!。也有好多东西是参考网上的资料。其实交叉pulseaudio这个库大概花了我差不多一周时间。在这个博客 http://www.cnblogs.com/wanzaiyimeng/p/3277530.html中找到了很有用的资料。

1、交叉编译ortp

下载源码:http://savannah.c3sl.ufpr.br/linphone/ortp/sources/?C=S;O=A

我使用0.18.0版本

  1. #!/bin/sh  
  2. if [ ! -d ortp-0.18.0 ] ; then  
  3.     tar xzvf ortp-0.18.0.tar.gz  
  4. fi  
  5.   
  6. if [ ! -d linux-build-arm ] ; then  
  7.     mkdir linux-build-arm  
  8. fi  
  9.   
  10. cd linux-build-arm  
  11. ../ortp-0.18.0/configure \  
  12. CC=arm-linux-gcc \  
  13. --host=arm-linux \  
  14. --target=arm-linux \  
  15. --prefix=/home/protocol_stack/install/  
  16. make   
  17. make install  

2、交叉编译osip2

下载源码:http://ftp.gnu.org/gnu/osip/

我使用的版本是3.6.0

  1. #!/bin/sh  
  2. if [ ! -d libosip2-3.6.0 ] ; then  
  3.     tar xzvf libosip2-3.6.0.tar.gz  
  4. fi  
  5.   
  6. if [ ! -d linux-build-arm ] ; then  
  7.     mkdir linux-build-arm  
  8. fi  
  9.   
  10. cd linux-build-arm  
  11. ../libosip2-3.6.0/configure \  
  12. --host=arm-linux \  
  13. --target=arm-linux \  
  14. --prefix=/home/protocol_stack/install/  
  15. make   
  16. make install  

3、交叉编译eXosip2

下载源码:http://ftp.gnu.org/gnu/osip/

我使用的版本是3.6.0

  1. #!/bin/sh  
  2. if [ ! -d libeXosip2-3.6.0 ] ; then  
  3.     tar xzvf libeXosip2-3.6.0.tar.gz  
  4. fi  
  5.   
  6. if [ ! -d linux-build-arm ] ; then  
  7.     mkdir linux-build-arm  
  8. fi  
  9.   
  10. cd linux-build-arm  
  11. ../libeXosip2-3.6.0/configure \  
  12. --host=arm-linux \  
  13. --target=arm-linux \  
  14. --prefix=/home/protocol_stack/install/ \  
  15. PKG_CONFIG_PATH=/home/protocol_stack/install/lib/pkgconfig  
  16. make   
  17. make install  

接下来可以编译mediastreamer2了,不过ms2,依赖好多库:ogg、speex、pulseaudio。而pulseaudio又依赖许多库:alsa、json、libtool。

4、交叉编译ogg

下载源码:http://xiph.org/downloads/

我使用1.3.1版本

  1. #!/bin/sh  
  2. if [ ! -d libogg-1.3.1 ] ; then  
  3.     tar xzvf libogg-1.3.1.tar.gz   
  4. fi  
  5.   
  6. if [ ! -d linux-build-arm ] ; then  
  7.     mkdir linux-build-arm  
  8. fi  
  9.   
  10. cd linux-build-arm  
  11. ../libogg-1.3.1/configure \  
  12. CC=arm-linux-gcc \  
  13. --prefix=/home/protocol_stack/install/ \  
  14. --host=arm-linux  
  15. make   
  16. make install  

5、交叉编译speex

下载源码:http://www.speex.org/downloads/

我使用1.2rc1版本

  1. #!/bin/sh  
  2. if [ ! -d speex-1.2rc1 ] ; then  
  3.     tar xzvf speex-1.2rc1.tar.gz   
  4. fi  
  5.   
  6. if [ ! -d linux-build-arm ] ; then  
  7.     mkdir linux-build-arm  
  8. fi  
  9.   
  10. cd linux-build-arm  
  11. ../speex-1.2rc1/configure \  
  12. CC=arm-linux-gcc \  
  13. --prefix=/home/protocol_stack/install/ \  
  14. --with-ogg=/home/protocol_stack/install/ \  
  15. --enable-fixed-point \  
  16. --disable-float-api \  
  17. --host=arm-linux  
  18. make   
  19. make install  

6、交叉编译pulseaudio

下载源码:http://freedesktop.org/software/pulseaudio/releases/

我使用1.0版本

  1. #!/bin/sh  
  2. if [ ! -d pulseaudio-1.0 ] ; then  
  3.     tar xzvf pulseaudio-1.0.tar.gz  
  4. fi  
  5.   
  6. if [ ! -d linux-build-arm ] ; then  
  7.     mkdir linux-build-arm  
  8. fi  
  9.   
  10. cd linux-build-arm  
  11. ../pulseaudio-1.0/configure \  
  12. CC=arm-linux-gcc \  
  13. CXX=arm-linux-g++ \  
  14. --prefix=/home/protocol_stack/install \  
  15. --host=arm-linux \  
  16. --disable-rpath \  
  17. --disable-nls \  
  18. --disable-dbus \  
  19. --disable-bluez \  
  20. --disable-samplerate \  
  21. --disable-solaris \  
  22. --disable-gconf \  
  23. --disable-avahi \  
  24. --disable-jack \  
  25. --disable-lirc \  
  26. --disable-glib2 \  
  27. --disable-gtk2 \  
  28. --disable-openssl \  
  29. --disable-ipv6 \  
  30. --disable-asyncns \  
  31. --disable-per-user-esound-socket \  
  32. --disable-oss-output \  
  33. --disable-oss-wrapper \  
  34. --disable-x11 \  
  35. --enable-neon-opt=no \  
  36. --with-database=simple \  
  37. PKG_CONFIG_PATH=/home/protocol_stack/install/lib/pkgconfig \  
  38. CPPFLAGS=-I/home/protocol_stack/install/include \  
  39. LDFLAGS=-L/home/protocol_stack/install/lib \  
  40. CFLAGS=-I/home/protocol_stack/install/include   
  41. make && make install  

交叉编译pulseaudio可能会出现从错误:

错误1:

checking for ltdl.h... no
configure: error: Unable to find libltdl version 2. Makes sure you have libtool 2.4 or later installed.
make: *** No targets specified and no makefile found.  Stop.

这时需要交叉编译libtool

下载源码:ftp://ftp.gnu.org/gnu/libtool/

我使用2.4.2版本

  1. ./configure --host=linux-arm \  
  2. --prefix =/home/protocol_stack/install/  
  3. make && make install  


错误2:

checking for LIBCHECK... no
checking for LIBJSON... no
configure: error: Package requirements ( json >= 0.9 ) were not met:


No package 'json' found

解决方法就是交叉编译json

下载源码:http://ftp.debian.org/debian/pool/main/j/json-c/

我使用0.9版本

  1. ./configure --host=linux-arm \  
  2. --prefix =/home/protocol_stack/install/  
  3. make && make install  

后面使用到json可能会出现下面的错误:

/home/protocol_stack/install/lib/libjson.so: undefined reference to `rpl_malloc'
/home/protocol_stack/install/lib/libjson.so: undefined reference to `rpl_realloc'
collect2: ld returned 1 exit status

解决方法:

修改json-c源码中的config.h文件的最后几行把#define malloc rpl_malloc 和 #define realloc rpl_realloc屏蔽掉


交叉编译alsa:

http://www.alsa-project.org/main/index.php/Main_Page

这个库的版本需要根据你嵌入式Linux内核中alsa的版本而定,可以使用命令查看内核中alsa的版本:

[root@AT91SAM9 /lte]# cat /proc/asound/version 
Advanced Linux Sound Architecture Driver Version 1.0.24.

可以到内核中alsa驱动版本是1.0.24,所以我选1.0.24版本

  1. ./configure --host=linux-arm \  
  2. --prefix =/home/protocol_stack/install/  
  3. make && make install  


此时重新编译pulseaudio应该能编译通过,不过根据configure的选项不一致有可能还得交叉编译flac、sndfile等库。


7、最后编译mediastreamer2

下载源码:http://ftp.twaren.net/Unix/NonGNU//linphone/mediastreamer/

我使用2.8版本

  1. #!/bin/sh  
  2. if [ ! -d mediastreamer-2.8.0 ] ; then  
  3.     tar xzvf mediastreamer-2.8.0.tar.gz  
  4. fi  
  5.   
  6. if [ ! -d linux-build-arm ] ; then  
  7.     mkdir linux-build-arm  
  8. fi  
  9.   
  10. cd linux-build-arm  
  11. ../mediastreamer-2.8.0/configure \  
  12. CC=arm-linux-gcc \  
  13. --prefix=/home/protocol_stack/install/ \  
  14. PKG_CONFIG_PATH=/home/protocol_stack/install/lib/pkgconfig \  
  15. --disable-gsm \  
  16. --enable-video=no \  
  17. --enable-macsnd=no \  
  18. --disable-static \  
  19. --disable-sdl \  
  20. --disable-x11 \  
  21. --disable-ffmpeg \  
  22. --host=arm-linux \  
  23. --target=arm-linux  
  24. make   
  25. make install  

上面的configure选项没有屏蔽v4l1和v4l2,所以还得交叉编译v4l

编译v4l

下载源码:http://pkgs.fedoraproject.org/repo/pkgs/libv4l/

我使用0.6.4版本

  1. #!/bin/sh  
  2. if [ ! -d libv4l-0.6.4 ] ; then  
  3.     tar xzvf libv4l-0.6.4.tar.gz  
  4. fi  
  5.   
  6. cd libv4l-0.6.4  
  7. make clean  
  8. make CC=arm-linux-gcc  
  9. make install PREFIX=/home/protocol_stack/install 
原文地址:http://blog.csdn.net/jecan123/article/details/18000529
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值