編譯支持iOS的libcurl+OpenSSL庫(支持https IPv6)

libcurl使用起來不難亩钟,但編譯對應的iOS庫文件卻是個大問題扶镀,編譯過程中可能各種報錯,網上找的庫可能libcurl版本或者OpenSSL版本不符合要求忆肾,這時候就得自己找對應的OpenSSL和libcurl源碼自己編譯了。本文介紹的方案支持IPv6菱肖,混編openssl后可以支持https請求。

1.編譯準備

我是從網絡上找的腳本進行編譯的旭从,但是很多腳本都是不能用的稳强,這個過程中浪費了很多時間,最后終于找到了可用的和悦,GitHub鏈接如下:
https://github.com/sinofool/build-libcurl-ios
https://github.com/sinofool/build-openssl-ios
這兩個鏈接里的腳本都下載下來退疫,單獨放到一個文件夾里面。
然后去openssl的官網https://www.openssl.org/source/和curl的官網https://curl.haxx.se/download.html
下載最新的源碼鸽素,如下圖

openssl源文件

curl源文件

下載好了源碼后也一起放入剛剛腳本所在的文件夾褒繁,并且把源碼解壓出來得到兩個源碼文件夾,最后該文件夾內容應該是如下圖所示:


所需的全部文件

然后為了防止因為腳本沒有權限而無法執(zhí)行馍忽,我們需要賦予腳本可執(zhí)行權限棒坏。也很簡單,比如要賦予build_libcurl_dist.sh執(zhí)行權限遭笋,我們打開終端坝冕,cd進入build_libcurl_dist.sh所在的文件夾,然后執(zhí)行chmod 777 build_libcurl_dist.sh就OK了瓦呼。順帶也對build_openssl_dist.sh同樣操作喂窟。

到這我們的準備工作就完成了。

2.開始編譯

編譯openssl
要支持https所以我們先得編譯openssl央串,然后再把openssl庫混編進libcurl中磨澡。
cd 進入我們上圖中的openssl-1.1.0g源碼文件夾,然后把build_openssl_dist.sh拖進終端质和,回車稳摄,就開始編譯openssl了,編譯完侦另,你會發(fā)現(xiàn)桌面多了一個文件夾秩命,里面放著openssl的庫和.h文件,如下圖:

openssl編譯結果

編譯libcurl
這時候褒傅,就該編譯libcurl了弃锐,先cd進入curl-7.56.1源碼文件夾,接著把build_libcurl_dist.sh腳本拖進終端殿托,回車霹菊,等待編譯完成,你會看到桌面上多了一個libcurl-ios-dist文件夾,里面就是我們最終得到的支持https旋廷、IPv6的庫和.h文件了鸠按。注意下,剛剛那些openssl的.h也已經被混編入libcurl.a了饶碘,所以我們引用的時候不需要把openssl的那些文件拖進工程目尖。

3.如何使用libcurl

使用說明就不多說了,很簡單的扎运,把編譯得到的libcurl-ios-dist文件夾直接拖進工程瑟曲,然后在工程里Targets的General 中,引用下libz.tbd這個系統(tǒng)庫豪治,使用curl的時候洞拨, #include "curl.h"就OK了。
如果想查看libcurl的版本號负拟,printf("\nlibcurl verrsion %s\n",curl_version());烦衣。打印結果是libcurl/7.56.1 SecureTransport后面的 SecureTransport表示支持ssl,但是openssl的具體版本號目前我沒找到對應的方法可以打印掩浙,下面這種方式打印出來的結果是openssl version SecureTransport和上面一致花吟,就是告訴你支持ssl但不告訴你版本號。

curl_version_info_data *data=  curl_version_info(CURLVERSION_NOW);
printf("\nopenssl version %s\n",data->ssl_version);

這個data結構體有一個long ssl_version_num; /* not used, always zero */這個屬性涣脚,但官方文檔告訴你示辈,這屬性用不了,只會返回0遣蚀,我試過確實是只能返回0...不知道官方怎么想的矾麻。

具體如何用libcurl發(fā)起請求,請看我的另外一篇文章iOS用libcurl發(fā)起一個get請求芭梯,并保存返回數(shù)據(jù)到沙盒

4.尾聲

簡單概括就是险耀,工欲善其事必先利其器,編譯本身很簡單玖喘,不過這個找對腳本就很折磨人了甩牺,網絡上的其余腳本基本上都是不能編譯最新的庫的。希望給被困在這個問題上的同學們一點幫助累奈。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末贬派,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子澎媒,更是在濱河造成了極大的恐慌搞乏,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戒努,死亡現(xiàn)場離奇詭異请敦,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門侍筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萤皂,“玉大人,你說我怎么就攤上這事匣椰●晌酰” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵禽笑,是天一觀的道長弛车。 經常有香客問我,道長蒲每,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任喻括,我火速辦了婚禮邀杏,結果婚禮上,老公的妹妹穿的比我還像新娘唬血。我一直安慰自己望蜡,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布拷恨。 她就那樣靜靜地躺著脖律,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腕侄。 梳的紋絲不亂的頭發(fā)上小泉,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音冕杠,去河邊找鬼微姊。 笑死,一個胖子當著我的面吹牛分预,可吹牛的內容都是我干的兢交。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼笼痹,長吁一口氣:“原來是場噩夢啊……” “哼配喳!你這毒婦竟也來了?” 一聲冷哼從身側響起凳干,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤晴裹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后纺座,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體息拜,經...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了少欺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喳瓣。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赞别,靈堂內的尸體忽然破棺而出畏陕,到底是詐尸還是另有隱情,我是刑警寧澤仿滔,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布惠毁,位于F島的核電站,受9級特大地震影響崎页,放射性物質發(fā)生泄漏鞠绰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一飒焦、第九天 我趴在偏房一處隱蔽的房頂上張望蜈膨。 院中可真熱鬧,春花似錦牺荠、人聲如沸翁巍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灶壶。三九已至,卻和暖如春杈曲,著一層夾襖步出監(jiān)牢的瞬間驰凛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工担扑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洒嗤,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓魁亦,卻偏偏與公主長得像渔隶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子洁奈,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內容