经过两周的交叉编译,编写源码,终于实现了在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版本

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

2、交叉编译osip2

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

我使用的版本是3.6.0

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

3、交叉编译eXosip2

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

我使用的版本是3.6.0

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

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

4、交叉编译ogg

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

我使用1.3.1版本

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

5、交叉编译speex

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

我使用1.2rc1版本

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

6、交叉编译pulseaudio

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

我使用1.0版本

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

[html] view plaincopy
  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版本

[html] view plaincopy
  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版本

[html] view plaincopy
  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版本

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

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

编译v4l

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

我使用0.6.4版本

[html] view plaincopy
  1. #!/bin/sh
  2. if [ ! -d libv4l-0.6.4 ] ; then
  3. tar xzvf libv4l-0.6.4.tar.gz
  4. fi
  5. cd libv4l-0.6.4
  6. make clean
  7. make CC=arm-linux-gcc
  8. make install PREFIX=/home/protocol_stack/install

原文地址:http://blog.csdn.net/jecan123/article/details/18000529

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

  1. ubuntu 18.04 Linux下osip2/eXosip2编译

    1.安装包准备 osip2:http://www.antisip.com/download/exosip2/ eXosip2:http://www.antisip.com/download/exosi ...

  2. 【Android FFMPEG 开发】FFMPEG 交叉编译配置 ( 下载 | 配置脚本 | 输出路径 | 函数库配置 | 程序配置 | 组件配置 | 编码解码配置 | 交叉编译配置 | 最终脚本 )

    文章目录 一.FFMPEG 源码下载 解压 二.交叉编译工具 三.configure 脚本及帮助命令 四.配置 configure 脚本 五.输出目录配置 六.函数库配置 七.程序配置选项 八.组件配 ...

  3. 【Android NDK 开发】NDK 交叉编译 ( NDK 函数库目录 | Linux 交叉编译环境搭建 | 指定头文件目录 | 指定函数库目录 | 编译 Android 命令行可执行文件 )

    文章目录 I . NDK platforms 目录下的 函数库 II . Ubuntu 配置 NDK 交叉编译环境 III . 同时指定编译的头文件和库文件 IV . 指定编译的头文件 V . 指定编 ...

  4. oSIP协议栈(及eXoSIP、Ortp等)使用入门

    http://ghj19850926.blog.163.com/blog/static/18591560201241410033429/ 一直没空仔细研究下oSIP,最近看到其版本已经到了3.x版本, ...

  5. oSIP协议栈(及eXoSIP、Ortp等)使用入门(转)

    oSIP协议栈(及eXoSIP.Ortp等)使用入门(转) 转自http://mbstudio.spaces.live.com/blog/cns!C898C3C40396DC11!955.entry ...

  6. SIP与RTP综合应用(转)

    SIP是一个会话协议,很多大企业都在用,通信行业的一个标准,其业务逻辑比较,简单地来说如下: User Agent Server ------------------REGISTER--------- ...

  7. SIP与RTP综合应用

    SIP是一个会话协议,很多大企业都在用,通信行业的一个标准,其业务逻辑比较,简单地来说如下: UserAgent                                             ...

  8. 开源VoIP展现企业应用前景

    开源VoIP展现企业应用前景        分类:            Asterisk 2007-08-29 20:57 661人阅读 评论(0) 收藏 举报 企业应用 电话 linux 产品 平 ...

  9. 第一章 FreeSWITCH 的架构

    FreeSWITCH 的架构 欢迎来到FreeSWITCH的世界!如果您正在阅读本书,那么您可能对这些事务感兴趣:实时通信.WebRTC.电信.VoIP.Freeswitch是一个完整的应用服务器和一 ...

最新文章

  1. vijos 1476 旅游规划题解
  2. 微信JS SDK Demo
  3. NIO:channel、buffer、状态变量、socket、charset
  4. 判断对象oStringObject是否为String
  5. 银联在线支付---利用测试案例代码模拟支付应用(修改)
  6. 下架77天后 小红书恢复上架安卓应用市场
  7. JavaScript数据结构——集合(Set)
  8. 实例讲解遗传算法——基于遗传算法的自动组卷系统【实践篇】
  9. SPSS Ver24.0安装包及详细步骤【SPSS 077期】
  10. html颜色代码表,html中黄色代码是什么
  11. 台式计算机 按键盘字母键 没反应6,电脑键盘数字键失灵-键盘字母上面数字键有的失灵不能用怎么?键盘字母上面数字键有的失灵 爱问知识人...
  12. 计算机驱动程序的安装过程,u盘驱动程序安装,教您如何安装u盘驱动程序
  13. mysql error trace_dede源码下data/mysql_error_trace.inc日志暴露后台地址漏洞修复
  14. 【web前端教程笔记】
  15. 网页进服务器,如何通过网页进去云服务器
  16. 手机号码界面输入数字查看手机信息
  17. Tampermonkey谷歌浏览器插件
  18. android eclipse加密,Elliptic Curve Cryptography:在eclipse android中使用NFC发送加密消息
  19. 怎么将微博图片中的水印去掉
  20. 如何确保程序的稳定性 - Android

热门文章

  1. 【模拟器】华三模拟器HCL安装操作指导
  2. 了解伽马(GAMMA、伽马值、光度、灰度系数)
  3. http和https的区别
  4. 异常:java.lang.ArithmeticException
  5. 鸿蒙与Android API对应关系
  6. 关于7z各种不能用的操作解决办法 7za 7z x Error: Can not open file as archive there is no such archive
  7. 嵌入式作业STM32F103C8T6和stm32CubeMX实现LED灯
  8. 墨门云文件加密系统有哪些功能特点?
  9. ipvs 导致syn 重传问题
  10. 通过添加dns加速访问app store