pjsip編譯

iOS之PJSIP的編譯與簡單使用

原創??2017年02月22日 16:26:12

標簽:

ios?/

pjsip?/

網絡電話

564

公司要做網絡通話及網絡視頻,初試,希望各位多多指點,有做過的希望聯系一下我,有些不懂得地方還望指教。

首先先談一下PJSIP的編譯,及在編譯中我所遇到的問題。

1.去官網下載http://www.pjsip.org(pjproject-2.6.tar.bz2),并解壓

2.在pjlib/include/pj/目錄下,建立一個config_site.h的文件

[ruby]?view plain?copy

cd?/Users/eleccomm/Downloads/pjproject-2.6/pjlib/include/pj??

vi?config_site.h??

根據官方說明文檔,我們的文件內容定義如下:

[ruby]?view plain?copy

#define?PJ_CONFIG_IPHONE?1??

#include???

對于小白可能不太熟悉怎樣終端插入,按i開始插入內容,輸入完成后Esc退出插入,輸入:wq回車即可退出編輯狀態,然后起還到主目錄下,即包含pjlib、pjlib-util、pjmedia、pjnath的目錄下

3.編譯靜態庫

i386,依次執行下面三行:

[ruby]?view plain?copy

export?DEVPATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer??

ARCH="-arch?i386"?CFLAGS="-O2?-m64?-mios-simulator-version-min=8.0"?LDFLAGS="-O2?-m64?-mios-simulator-version-min=8.0"?./configure-iphone??

make?dep?&&?make?clean?&&?make??

成功后,模擬器編譯好的靜態庫會存在于

pjlib/lib

pjlib-util/lib

pjmedia/lib

pjnath/lib

pjsip/lib

third_party/lib

armv7,關閉剛剛的終端,重新回到主目錄,依次執行以下命令:

[ruby]?view plain?copy

ARCH='-arch?armv7'?./configure-iphone??

make?dep?&&?make?clean?&&?make??

armv7s,直接執行以下命令:

[ruby]?view plain?copy

ARCH='-arch?armv7s'?./configure-iphone??

make?dep?&&?make?clean?&&?make??

arm64,執行以下命令:

[ruby]?view plain?copy

ARCH='-arch?arm64'?./configure-iphone??

make?dep?&&?make?clean?&&?make??

————————————————————————————————————————————————

也可以這樣編譯靜態庫

回到主目錄,創建一個文件夾

[ruby]?view plain?copy

mkdir?sip??

編譯靜態庫

armv7

[ruby]?view plain?copy

sudo?ARCH='-arch?armv7'?./configure-iphone??--prefix=/Users/eleccomm/Downloads/pjproject-2.6/sip/armv7??

make?dep?&&?make?clean?&&?make??

make?install??

armv7s

[ruby]?view plain?copy

sudo?ARCH='-arch?armv7s'?./configure-iphone??--prefix=/Users/eleccomm/Downloads/pjproject-2.6/sip/armv7s??

make?dep?&&?make?clean?&&?make??

make?install??

arm64

[ruby]?view plain?copy

sudo?ARCH='-arch?arm64'?./configure-iphone??--prefix=/Users/eleccomm/Downloads/pjproject-2.6/sip/arm64??

make?dep?&&?make?clean?&&?make??

make?install??

編譯模擬器庫的時候需要先在主目錄下的configure-iphone中添加幾行代碼

vim configure-iphone?

在第一個if前面添加上如是代碼:

[ruby]?view plain?copy

if?[?"$ARCH"?=?"-arch?x86_64"?];?then??

DEVPATH="/Applications/XCode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer"??

echo"$F:?Simulator?64bit,?using?${DEVPATH}"??

fi??

if?[?"$ARCH"?=?"-arch?i386"?];?then??

DEVPATH="/Applications/XCode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer"??

echo"$F:?Simulator?32bit,?using?${DEVPATH}"??

fi??

i386

[ruby]?view plain?copy

sudo?ARCH="-arch?i386"?CFLAGS="-O2?-m64?-mios-simulator-version-min=7.0"?LDFLAGS="-O2?-m64?-mios-simulator-version-min=7.0"?./configure-iphone?--prefix=/Users/eleccomm/Downloads/pjproject-2.6/sip/x86??

make?dep?&&?make?clean?&&?make??

make?install??

x64

[ruby]?view plain?copy

sudo?ARCH="-arch?x86_64"?CFLAGS="-O2?-m64?-mios-simulator-version-min=7.0"?LDFLAGS="-O2?-m64?-mios-simulator-version-min=7.0"?./configure-iphone?--prefix=/Users/eleccomm/Downloads/pjproject-2.6/sip/x64??

make?dep?&&?make?clean?&&?make??

make?install??

4.合并靜態庫

[ruby]?view plain?copy

mkdir?sip/all??

mkdir?sip/all/lib??

cd?/Users/eleccomm/Downloads/pjproject-2.6/sip??

合并靜態庫

[ruby]?view plain?copy

lipo?-create?arm64/lib/libg7221codec-arm64-apple-darwin_ios.a?armv7/lib/libg7221codec-armv7-apple-darwin_ios.a?armv7s/lib/libg7221codec-armv7s-apple-darwin_ios.a?x64/lib/libg7221codec-x86_64-apple-darwin_ios.a?x86/lib/libg7221codec-i386-apple-darwin_ios.a?-output?all/lib/libg7221codec.a??

lipo?-create?arm64/lib/libgsmcodec-arm64-apple-darwin_ios.a?armv7/lib/libgsmcodec-armv7-apple-darwin_ios.a?armv7s/lib/libgsmcodec-armv7s-apple-darwin_ios.a?x64/lib/libgsmcodec-x86_64-apple-darwin_ios.a?x86/lib/libgsmcodec-i386-apple-darwin_ios.a?-output?all/lib/libgsmcodec.a??

lipo?-create?arm64/lib/libilbccodec-arm64-apple-darwin_ios.a?armv7/lib/libilbccodec-armv7-apple-darwin_ios.a?armv7s/lib/libilbccodec-armv7s-apple-darwin_ios.a?x64/lib/libilbccodec-x86_64-apple-darwin_ios.a?x86/lib/libilbccodec-i386-apple-darwin_ios.a?-output?all/lib/libilbccodec.a??

lipo?-create?arm64/lib/libpj-arm64-apple-darwin_ios.a?armv7/lib/libpj-armv7-apple-darwin_ios.a?armv7s/lib/libpj-armv7s-apple-darwin_ios.a?x64/lib/libpj-x86_64-apple-darwin_ios.a?x86/lib/libpj-i386-apple-darwin_ios.a?-output?all/lib/libpj.a??

lipo?-create?arm64/lib/libpjlib-util-arm64-apple-darwin_ios.a?armv7/lib/libpjlib-util-armv7-apple-darwin_ios.a??armv7s/lib/libpjlib-util-armv7s-apple-darwin_ios.a?x64/lib/libpjlib-util-x86_64-apple-darwin_ios.a?x86/lib/libpjlib-util-i386-apple-darwin_ios.a?-output?all/lib/libpjlib-util.a??

lipo?-create?arm64/lib/libpjmedia-audiodev-arm64-apple-darwin_ios.a?armv7/lib/libpjmedia-audiodev-armv7-apple-darwin_ios.a?armv7s/lib/libpjmedia-audiodev-armv7s-apple-darwin_ios.a?x64/lib/libpjmedia-audiodev-x86_64-apple-darwin_ios.a?x86/lib/libpjmedia-audiodev-i386-apple-darwin_ios.a?-output?all/lib/libpjmedia-audiodev.a??

lipo?-create?arm64/lib/libpjmedia-arm64-apple-darwin_ios.a?armv7/lib/libpjmedia-armv7-apple-darwin_ios.a?armv7s/lib/libpjmedia-armv7s-apple-darwin_ios.a?x64/lib/libpjmedia-x86_64-apple-darwin_ios.a?x86/lib/libpjmedia-i386-apple-darwin_ios.a?-output?all/lib/libpjmedia.a??

lipo?-create?arm64/lib/libpjmedia-codec-arm64-apple-darwin_ios.a?armv7/lib/libpjmedia-codec-armv7-apple-darwin_ios.a?armv7s/lib/libpjmedia-codec-armv7s-apple-darwin_ios.a?x64/lib/libpjmedia-codec-x86_64-apple-darwin_ios.a?x86/lib/libpjmedia-codec-i386-apple-darwin_ios.a?-output?all/lib/libpjmedia-codec.a??

lipo?-create?arm64/lib/libpjmedia-videodev-arm64-apple-darwin_ios.a?armv7/lib/libpjmedia-videodev-armv7-apple-darwin_ios.a?armv7s/lib/libpjmedia-videodev-armv7s-apple-darwin_ios.a?x64/lib/libpjmedia-videodev-x86_64-apple-darwin_ios.a?x86/lib/libpjmedia-videodev-i386-apple-darwin_ios.a?-output?all/lib/libpjmedia-videodev.a??

lipo?-create?arm64/lib/libpjnath-arm64-apple-darwin_ios.a?armv7/lib/libpjnath-armv7-apple-darwin_ios.a?armv7s/lib/libpjnath-armv7s-apple-darwin_ios.a?x64/lib/libpjnath-x86_64-apple-darwin_ios.a?x86/lib/libpjnath-i386-apple-darwin_ios.a?-output?all/lib/libpjnath.a??

lipo?-create?arm64/lib/libpjsip-arm64-apple-darwin_ios.a?armv7/lib/libpjsip-armv7-apple-darwin_ios.a?armv7s/lib/libpjsip-armv7s-apple-darwin_ios.a?x64/lib/libpjsip-x86_64-apple-darwin_ios.a?x86/lib/libpjsip-i386-apple-darwin_ios.a?-output?all/lib/libpjsip.a??

lipo?-create?arm64/lib/libpjsip-simple-arm64-apple-darwin_ios.a?armv7/lib/libpjsip-simple-armv7-apple-darwin_ios.a?armv7s/lib/libpjsip-simple-armv7s-apple-darwin_ios.a?x64/lib/libpjsip-simple-x86_64-apple-darwin_ios.a?x86/lib/libpjsip-simple-i386-apple-darwin_ios.a?-output?all/lib/libpjsip-simple.a??

lipo?-create?arm64/lib/libpjsip-ua-arm64-apple-darwin_ios.a?armv7/lib/libpjsip-ua-armv7-apple-darwin_ios.a?armv7s/lib/libpjsip-ua-armv7s-apple-darwin_ios.a?x64/lib/libpjsip-ua-x86_64-apple-darwin_ios.a?x86/lib/libpjsip-ua-i386-apple-darwin_ios.a?-output?all/lib/libpjsip-ua.a??

lipo?-create?arm64/lib/libpjsua-arm64-apple-darwin_ios.a?armv7/lib/libpjsua-armv7-apple-darwin_ios.a?armv7s/lib/libpjsua-armv7s-apple-darwin_ios.a?x64/lib/libpjsua-x86_64-apple-darwin_ios.a?x86/lib/libpjsua-i386-apple-darwin_ios.a?-output?all/lib/libpjsua.a??

lipo?-create?arm64/lib/libpjsua2-arm64-apple-darwin_ios.a?armv7/lib/libpjsua2-armv7-apple-darwin_ios.a?armv7s/lib/libpjsua2-armv7s-apple-darwin_ios.a?x64/lib/libpjsua2-x86_64-apple-darwin_ios.a?x86/lib/libpjsua2-i386-apple-darwin_ios.a?-output?all/lib/libpjsua2.a??

lipo?-create?arm64/lib/libresample-arm64-apple-darwin_ios.a?armv7/lib/libresample-armv7-apple-darwin_ios.a?armv7s/lib/libresample-armv7s-apple-darwin_ios.a?x64/lib/libresample-x86_64-apple-darwin_ios.a?x86/lib/libresample-i386-apple-darwin_ios.a?-output?all/lib/libresample.a??

lipo?-create?arm64/lib/libspeex-arm64-apple-darwin_ios.a?armv7/lib/libspeex-armv7-apple-darwin_ios.a?armv7s/lib/libspeex-armv7s-apple-darwin_ios.a?x64/lib/libspeex-x86_64-apple-darwin_ios.a?x86/lib/libspeex-i386-apple-darwin_ios.a?-output?all/lib/libspeex.a??

lipo?-create?arm64/lib/libsrtp-arm64-apple-darwin_ios.a?armv7/lib/libsrtp-armv7-apple-darwin_ios.a?armv7s/lib/libsrtp-armv7s-apple-darwin_ios.a?x64/lib/libsrtp-x86_64-apple-darwin_ios.a?x86/lib/libsrtp-i386-apple-darwin_ios.a?-output?all/lib/libsrtp.a??

lipo?-create?arm64/lib/libyuv-arm64-apple-darwin_ios.a?armv7/lib/libyuv-armv7-apple-darwin_ios.a?armv7s/lib/libyuv-armv7s-apple-darwin_ios.a?x64/lib/libyuv-x86_64-apple-darwin_ios.a?x86/lib/libyuv-i386-apple-darwin_ios.a?-output?all/lib/libyuv.a??

將arm64中的include文件夾copy到all目錄下

5.將編譯好的庫導入到項目中去

配置Header Search Paths ——>?$(PROJECT_DIR)/phone/all/include;

Other Linker Flags: -ObjC;

Preprocessor Macros: PJ_AUTOCONF=1

在Build Phases中的Link Binary With Libraries中添加Framework:AudioToolbox、AVFoundation

最后,附上小demo:https://github.com/SexiZhang/PJSIP



http://www.lxweimin.com/p/22cc698518ad ? ? ??

http://blog.csdn.net/zyy416243653/article/details/52814019

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內容