最近由于开发一款基于 SIP 通信的 VOIP 应用程序项目需要,自己研究了一下几款开源 SIP 实现,主要有 PJSIP 和 Linphone,PJSIP 由于文档说明详细,编译和测试都没有费多大事情。Linphone 的编译就比较费神费力了,开始之前查看互联网上的资料,大家都说各种痛苦折磨,后来自己实践了一把,除了文档说明奇缺之外,编译还算顺利,除了调查耗费了不少时间。
简单说明一下 PJSIP 和 Linphone PJSIP 是一个用 C 语言编写的免费开源的多媒体通信库,实现了基于标准的协议,如 SIP、SDP、RTP、STUN、TURN 和 ICE。它将信令协议(SIP)与丰富的多媒体框架和 NAT 穿越功能结合到一个高级 API 中,该 API 可在几乎任何类型的系统上使用,包括桌面、嵌入式系统和移动手机。
Linphone 是一个开源的 SIP 电话,可在移动和桌面环境(iOS、Android、Windows Phone 8、Linux、Windows 桌面、MAC OSX)以及 Web 浏览器上使用。Linphone 在用户界面和核心引擎之间有一个分离,允许在相同功能之上创建各种类型的用户界面。
编译环境 MAC OS 10.10.5 Xcode 6.4
以下是编译的方法步骤,500M 的源代码官方只提供一段 README.MD 来说明。
1. 安装 Xcode 和 command line tools,去 AppStore 下载即可,已安装过的跳过 2. 安装 HomeBrew,去http://brew.sh,按提示安装最新版本的 HomeBrew 即可,或者联网打开终端使用以下命令安装。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3.Xcode 和 Homebrew 安装无误后可以使用以下命令进行准备工作,首先下载 linphone 的源代码,折腾即将开始。
git clone git://git.linphone.org/linphone-iphone.git --recursive
这里准备好网络,大约 500M 左右的文件,建议使用 VPN 下载。
4. 编译源代码需要安装必要的依赖包和 lib,运行以下命令,按要求安装即可。
./prepare.py
5. 准备工作完成后使用以下命令编译 linphone 的 SDK。
./prepare.py -c && ./prepare.py && make
6.SDK 编译完成后可以打开 linphone.xcodeproj,后面按正常的 ios 应用程序进行编译即可。
编译过程中问题与解决 1. 无法安装和卸载 homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
Failed to locate Homebrew!
原因可能是这台电脑上的其他用户安装过 homebrew,解决办法是运行以下命令重新安装
#清理 git 缓存
rm -rf /usr/local/.git
#彻底清理 Cellar,尽量不要使用
#rm -rf /usr/local/Cellar
2. 提示找不到 libtoolize,要求安装 libtool, 原因是 MAC OS 上 libtool 和 libtoolize 这两位改成了 glibtoolize 和 glibtool。连接一下即可
sudo ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize
参考资料 http://blog.csdn.net/showhilllee/article/details/42966305