最近、SIP 通信に基づく VOIP アプリケーションプロジェクトの開発のために、いくつかのオープンソース SIP 実装を研究しました。主に PJSIP と Linphone があり、PJSIP はドキュメントが詳細で、コンパイルとテストもそれほど手間がかかりませんでした。Linphone のコンパイルはかなり手間がかかりました。始める前にインターネット上の資料を確認すると、皆が様々な苦痛を訴えていましたが、実際に自分で試してみると、ドキュメントが非常に不足している以外は、コンパイルは比較的スムーズに進みました。ただし、調査にはかなりの時間がかかりました。
PJSIP と Linphone について簡単に説明します。PJSIP は、SIP、SDP、RTP、STUN、TURN、ICE などの標準ベースのプロトコルを実装した C 言語で書かれた無料のオープンソースマルチメディア通信ライブラリです。シグナリングプロトコル(SIP)をリッチなマルチメディアフレームワークと NAT トラバーサル機能と組み合わせ、高レベルの API に統合されており、デスクトップ、組み込みシステム、モバイル端末など、ほぼすべてのタイプのシステムに適しています。
Linphone は、モバイルおよびデスクトップ環境(iOS、Android、Windows Phone 8、Linux、Windows Desktop、MAC OSX)およびウェブブラウザで利用可能なオープンソースの SIP 電話です。Linphone は、ユーザーインターフェースとコアエンジンの間に分離を持ち、同じ機能の上にさまざまな種類のユーザーインターフェースを作成できるようにしています。
コンパイル環境 MAC OS 10.10.5 Xcode 6.4
以下はコンパイルの手順で、500M のソースコードについて公式は README.MD の一部を提供しています。
- Xcode とコマンドラインツールをインストールします。AppStore からダウンロードできます。すでにインストール済みの方はスキップしてください。
- HomeBrew をインストールします。http://brew.sh に行き、指示に従って最新バージョンの HomeBrew をインストールしてください。または、ネットワークに接続してターミナルを開き、以下のコマンドを使用してインストールします。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- Xcode と Homebrew のインストールが正しく行われたら、以下のコマンドを使用して準備作業を行います。まず、linphone のソースコードをダウンロードします。これから手間がかかります。
git clone git://git.linphone.org/linphone-iphone.git --recursive
ここでネットワークを準備してください。約 500M のファイルが必要です。VPN を使用してダウンロードすることをお勧めします。
- ソースコードをコンパイルするには、必要な依存パッケージと lib をインストールする必要があります。以下のコマンドを実行し、要求に従ってインストールしてください。
./prepare.py
- 準備作業が完了したら、以下のコマンドを使用して linphone の SDK をコンパイルします。
./prepare.py -c && ./prepare.py && make
- 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#
- 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