Gmssl編譯ios靜態(tài)庫

1.github下載最新版本Gmssl

https://github.com/guanzhi/GmSSL

2.在MacOS系統(tǒng)下CD進入下載的Gmssl文件夾(一般下載為zip文件解壓后得到文件夾)
3.執(zhí)行如下命令:

export CC=clang
export CROSS_TOP=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
export CROSS_SDK=iPhoneOS.sdk
export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:$PATH"
./Configure ios64-cross -DGMSSL_NO_TURBO no-shared --prefix=/usr/local/openssl-ios64
make

(重新安裝的話需要先清理:make distclean)

armv7

命令配置

進入目錄

$ cd GMSSL源碼目錄

設(shè)置編譯器

$ export CC="clang -arch armv7"

設(shè)置工具鏈路徑

export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:PATH"

設(shè)置開發(fā)環(huán)境目錄

$ export CROSS_TOP=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer

設(shè)置SDK

$ export CROSS_SDK=iPhoneOS12.4.sdk
export CROSS_SDK=iPhoneOS13.6.sdk 最新版本

設(shè)置最小依賴版本

$ export IPHONEOS_DEPLOYMENT_TARGET=8.0

生成makefile

$ ./Configure iphoneos-cross no-shared --prefix=/usr/local/openssl

-DOPENSSL_NO_ASYNC (ios上傳AppStore防止接口重復(fù))

構(gòu)建

make

保存源碼目錄下的生成文件
libcrypto.a,libssl.a莺葫,并重命名為帶有相應(yīng)指令集名稱的名字,例如libcrypto-armv7.a,libssl-armv7.a

arm64

命令配置

進入目錄

$ cd GMSSL源碼目錄

設(shè)置編譯器

$ export CC="clang -arch arm64"

設(shè)置工具鏈路徑

export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:PATH"

設(shè)置開發(fā)環(huán)境目錄

$ export CROSS_TOP=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer

設(shè)置SDK

$ export CROSS_SDK=iPhoneOS12.4.sdk

設(shè)置最小依賴版本

$ export IPHONEOS_DEPLOYMENT_TARGET=8.0

生成makefile

$ ./Configure ios64-cross no-shared -DGMSSL_NO_TURBO --prefix=/usr/local/openssl-ios64

構(gòu)建

make

目前編譯的時候默認用EC_GFp_sm2z256_method,這個實現(xiàn)提供超過4倍的性能提升充甚,但是這個實現(xiàn)只在比較新的X86_64環(huán)境下可用双泪,理想情況下應(yīng)該判斷當前硬件環(huán)境,但是目前的編譯系統(tǒng)里面還沒來得及做這個判斷娱节。
-DGMSSL_NO_TURBO可以顯式指定不要用EC_GFp_sm2z256_method這個快速實現(xiàn)致板。
ec_nistp_64_gcc_128可以啟用SM2的純C優(yōu)化實現(xiàn),這個優(yōu)化實現(xiàn)可以提供2倍的性能提升坊夫,可以用在所有64位的系統(tǒng)里面砖第,但是需要較高版本編譯器的支持,這個選項默認是不開啟的环凿,因此需要enable顯式打開
保存源碼目錄下的生成文件
libcrypto.a,libssl.a梧兼,并重命名為帶有相應(yīng)指令集名稱的名字

i386 和 x86_64

命令配置

進入目錄

$ cd GMSSL源碼目錄

設(shè)置編譯器

$ export CC="clang -arch i386 -arch x86_64"

設(shè)置工具鏈路徑

export PATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:PATH"

設(shè)置開發(fā)環(huán)境目錄

$ export CROSS_TOP=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer

設(shè)置SDK

$ export CROSS_SDK=iPhoneSimulator12.4.sdk
iPhoneOS13.6.sdk

設(shè)置最小依賴版本

$ export IPHONEOS_DEPLOYMENT_TARGET=8.0

生成makefile

$ ./Configure iphoneos-cross no-shared --prefix=/usr/local/openssl

構(gòu)建

make

保存源碼目錄下的生成文件
libcrypto.a,libssl.a,并重命名為帶有相應(yīng)指令集名稱的名字

調(diào)試

生成makefile時智听,啟用 no-asm選項

$ ./Configure xxxxxx no-asm xxxxxx
1
在源碼目錄找到生成的Makefile,打開并將里面的-O3 替換成 -g

_getcontext, _makecontext, _setcontext. If method names in your source code match the private Apple APIs listed above
問題

使用了私有方法羽杰,編譯GMSSL時,內(nèi)部調(diào)用了這些方法到推,編譯時設(shè)置no-async就可以解決上述問題了考赛。

./Configure 時添加 -DOPENSSL_NO_ASYNC

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市莉测,隨后出現(xiàn)的幾起案子颜骤,更是在濱河造成了極大的恐慌,老刑警劉巖捣卤,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忍抽,死亡現(xiàn)場離奇詭異,居然都是意外死亡董朝,警方通過查閱死者的電腦和手機鸠项,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來子姜,“玉大人祟绊,你說我怎么就攤上這事「绮叮” “怎么了牧抽?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扭弧。 經(jīng)常有香客問我阎姥,道長,這世上最難降的妖魔是什么鸽捻? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上御蒲,老公的妹妹穿的比我還像新娘衣赶。我一直安慰自己,他們只是感情好厚满,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布府瞄。 她就那樣靜靜地躺著,像睡著了一般碘箍。 火紅的嫁衣襯著肌膚如雪遵馆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天丰榴,我揣著相機與錄音货邓,去河邊找鬼。 笑死四濒,一個胖子當著我的面吹牛换况,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盗蟆,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼戈二,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了喳资?” 一聲冷哼從身側(cè)響起觉吭,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仆邓,沒想到半個月后亏栈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡宏赘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年绒北,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片察署。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡闷游,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贴汪,到底是詐尸還是另有隱情脐往,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布扳埂,位于F島的核電站业簿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏阳懂。R本人自食惡果不足惜梅尤,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一柜思、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧巷燥,春花似錦赡盘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钝腺,卻和暖如春抛姑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艳狐。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工定硝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人僵驰。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓喷斋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蒜茴。 傳聞我的和親對象是個殘疾皇子星爪,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

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

  • 下載OpenSSL源碼:https://www.openssl.org/source/ 進入openssl目錄,創(chuàng)...
    木子_禮閱讀 8,484評論 5 9
  • 公司項目需要用到sm2的加簽功能粉私,iOS方面的實現(xiàn)找了很久也沒找到顽腾,最后用了GmSSL來實現(xiàn),GMSSL里面有基于...
    北極點閱讀 1,611評論 1 0
  • 最近公司項目需要用到sm2的加簽功能诺核,IOS方面的實現(xiàn)找了很久也沒找到抄肖,最后用了GmSSL來實現(xiàn),GMSSL里面有...
    BetterG閱讀 3,555評論 3 5
  • 下載的ffmpeg一般需要自己編譯下窖杀,如果在iOS上用編譯成靜態(tài)庫.a文件漓摩,如果在安卓上用編譯成.so動態(tài)庫。把編...
    買買提不擼串閱讀 1,413評論 0 0
  • 最近搞了下sm2,防止自己忘記,記錄下: 官方地址:Gmssl官網(wǎng) 官方編譯文檔中,介紹了怎么編譯arm64的靜態(tài)...
    2fca65ed717b閱讀 3,134評論 7 3