[iOS] SRT編譯傻瓜教程

以下以SRT ver 1.4.3為例
這個(gè)版本可能會(huì)過(guò)時(shí), 但編譯方法都是一樣的.
我會(huì)將影響版本編譯的地方, 插入一些說(shuō)明.

1.基本環(huán)境準(zhǔn)備


  • MacOS
  • Homebrew
Homebrew安裝

打開(kāi)終端輸入

  /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


2.編譯環(huán)境準(zhǔn)備


通過(guò)Homebrew安裝

  • cmake

ver 2.8.12 或更高

brew install cmake


  • pkg-config
brew install pkg-config


  • openssl

ver 1.1
一般來(lái)說(shuō), MacOS都會(huì)自帶, 注意版本號(hào)

brew install openssl

Q: 我可能沒(méi)有. 或者說(shuō) 我怎么找到本地中安裝的openssl?
A: /usr/local/Cellar/openssl/版本號(hào)/bin/openssl

如果沒(méi)有你需要按照上面自己安裝一個(gè), 版本盡量滿足1.1的要求(1.1.x)

Q: 我有openssl, 怎樣知道他是否生效呢?
A: 在終端中輸入下面命令

openssl version

Q: 我有openssl, 但使用openssl version時(shí), 提示我沒(méi)有找到這個(gè)命令
A: 你需要link一下

注意openssl的路徑中帶有版本號(hào).
所以復(fù)制粘貼的時(shí)候, 你需要結(jié)合自身的環(huán)境修改.
我的環(huán)境中如下

  ln -s /usr/local/Cellar/openssl/1.1.1k/bin/openssl /usr/local/bin

在這一切結(jié)束后, 你要知道你的openssl版本號(hào), 因?yàn)橄旅鏁?huì)用到.

3.SRT的準(zhǔn)備


SRT在GitHub中的地址

選擇一種方式, 將代碼下載下來(lái)

 git clone https://github.com/Haivision/srt.git


4.OpenSSL-for-iOS的準(zhǔn)備


OpenSSL for iOS 在GitHub中的地址
選擇一種方式, 將代碼下載下來(lái)

 git clone https://github.com/x2on/OpenSSL-for-iPhone.git

Q: 剛剛不是才安裝過(guò)openssl嗎?
A: 這個(gè)是給iOS環(huán)境用的, 結(jié)合Xcode工具鏈編譯的.

Q: 為什么特別說(shuō)明結(jié)合Xcode工具鏈編譯的
A: 因?yàn)椴煌ㄟ^(guò)Xcode工具鏈編譯, 在iOS中就用不了啊(笑)

5.OpenSSL-for-iOS編譯


當(dāng)你下載ok后, 進(jìn)入到OpenSSL-for-iPhone文件中, 執(zhí)行

還記得上面讓你記錄的版本號(hào)嗎? 請(qǐng)?jiān)谶@里配置他--version=1.1.x

sh ./build-libssl.sh --version=1.1.1d

不出意外的話, 編譯完成后, 你可以在OpenSSL-for-iPhone/bin中找到一些SDK文件
比如iPhoneOS14.5-arm64.sdk
這個(gè)就是在Xcode中可以使用的openssl靜態(tài)庫(kù)
他們都是使用處理器架構(gòu)命名的

如果你的項(xiàng)目中需要支持多種處理器架構(gòu), 你需要將同名的下列文件合并到一起
libssl.a
libcrypto.a

只是簡(jiǎn)單的合并兩個(gè)庫(kù)的話, 使用下面的命令后, 路徑3下的libssl.alibcrypto.a是最終生成的fat包

lipo -create 路徑1/libssl.a 路徑2/libssl.a -output 路徑3/libssl.a
lipo -create 路徑1/libcrypto.a 路徑2/libcrypto.a -output 路徑3/libcrypto.a

如果你需要合并三個(gè)及以上, 你可以參考這篇文章

以上完成后, 還需要做一些事情

  • 新建一個(gè)文件夾起名為openssl-iOS
  • 將SDK中的include拷貝進(jìn)來(lái) (任何一個(gè)SDK中的都可以)
  • 將SDK中的lib 拷貝進(jìn)來(lái) (如果你的.a是自己合成的, 那就拷貝你的.a)
  • lib中的package文件夾刪除掉

你的openssl文件中, 應(yīng)該是這樣的結(jié)構(gòu)

openssl-iOS
+-- lib
     +-- libssl.a
     +-- libcrypto.a
+-- include
     +-- xxxx.h
     +-- ...(.h有很多)

記得這個(gè)openssl-iOS文件夾, 一會(huì)兒要用到他.

6.SRT編譯


首先, 在終端中進(jìn)入到srt文件夾中, (如果你下載的是zip包, 文件夾叫srt-master)

cd srt

配置三個(gè)環(huán)境變量
這里配置的是安裝到你mac中的openssl的路徑

export OPENSSL_ROOT_DIR=$(brew --prefix openssl)
export OPENSSL_LIB_DIR=$(brew --prefix openssl)"/lib"
export OPENSSL_INCLUDE_DIR=$(brew --prefix openssl)"/include"

然后再配置一個(gè)環(huán)境變量
這里配置的是, 在iOS環(huán)境中, srt依賴的openssl

這里用到的是上面openssl-iOS文件夾的路徑
為了方便說(shuō)明
我沒(méi)有為自己創(chuàng)建openssl-iOS路徑
而是直接使用OpenSSL-for-iPhone/bin下的SDK文件夾作為路徑
如果是你的話, 應(yīng)該在export IOS_OPENSSL=后面寫上openssl-iOS的絕對(duì)路徑

export IOS_OPENSSL="/Users/panda/source/OpenSSL-for-iPhone/bin/iPhoneOS14.5-arm64.sdk"



ok到這一步為止, 一切準(zhǔn)備妥當(dāng)
如果你的cmake沒(méi)有問(wèn)題的話, 你可以開(kāi)始編譯了
以下是三條命令合一, 你可以一起使用, 也可以逐條使用

./configure --cmake-prefix-path=$IOS_OPENSSL --use-openssl-pc=OFF --cmake-toolchain-file=scripts/iOS.cmake
make
make install

7.編譯后的處理


編譯結(jié)束后, 你需要找到你的include和.a文件,他們的路徑在下面
/usr/local/lib/libsrt.a
/usr/local/include/srt

你可以創(chuàng)建一個(gè)lib文件夾
將上面openssl-iOS中的文件
和剛剛生成的srt相關(guān)文件, 全部放進(jìn)去, 整理成如下結(jié)構(gòu)

同一個(gè)include中, 盡量不要混放多個(gè)庫(kù)的.h文件
我建議你為他們創(chuàng)建一個(gè)以庫(kù)名命名的文件夾收納, 方便管理
當(dāng)然這只是一個(gè)建議

lib
+-- libssl.a
+-- libcrypto.a
+-- libsrt.a
+-- include
     +-- srt
          +-- xxxx.h
          +-- ...(.h有很多)
     +-- openssl
          +-- xxxx.h
          +-- ...(.h有很多)

將他導(dǎo)入你的Xcode中

  • 設(shè)置Header Search Paths
    TargetsBuild SettingsSearch PathsHeader Search Paths
    加入$(PROJECT_DIR)/Project名稱/lib/include
    設(shè)置為recursive, 以便讓Xcode明白這里需要遞歸搜索

  • 設(shè)置Library Search Paths
    TargetsBuild SettingsSearch PathsLibrary Search Paths
    加入$(PROJECT_DIR)/Project名稱/lib
    設(shè)置為recursive, 以便讓Xcode明白這里需要遞歸搜索

  • 加入Framework
    TargetsGeneralFrameworks, Libraries, and Embedded Content
    點(diǎn)擊+添加一個(gè)
    libc++.1.tbd
    然后點(diǎn)擊+選擇Add Other...加入下列
    libssl.a
    libcrypto.a
    libsrt.a

如果有幫助到您的話, 期待您的打賞
如果有疑問(wèn)的話, 歡迎隨時(shí)提問(wèn)
如果有錯(cuò)誤的話, 歡迎您的指正

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棕洋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌币他,老刑警劉巖域慷,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件带欢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡抛猖,警方通過(guò)查閱死者的電腦和手機(jī)魏颓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門缚去,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人琼开,你說(shuō)我怎么就攤上這事易结。” “怎么了柜候?”我有些...
    開(kāi)封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵搞动,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我渣刷,道長(zhǎng)鹦肿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任辅柴,我火速辦了婚禮箩溃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碌嘀。我一直安慰自己涣旨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布股冗。 她就那樣靜靜地躺著霹陡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪止状。 梳的紋絲不亂的頭發(fā)上烹棉,一...
    開(kāi)封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音怯疤,去河邊找鬼浆洗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛集峦,可吹牛的內(nèi)容都是我干的伏社。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼少梁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼洛口!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起凯沪,我...
    開(kāi)封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤第焰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后妨马,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挺举,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杀赢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了湘纵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脂崔。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梧喷,靈堂內(nèi)的尸體忽然破棺而出砌左,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站比原,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏产弹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一弯囊、第九天 我趴在偏房一處隱蔽的房頂上張望痰哨。 院中可真熱鬧,春花似錦匾嘱、人聲如沸斤斧。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)折欠。三九已至,卻和暖如春吼过,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咪奖。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工盗忱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人羊赵。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓趟佃,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親昧捷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闲昭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容