ios 編譯openssl支援arm64

2021-06-28 20:14:10 字數 2243 閱讀 7156

最近在編譯支付寶 快捷支付(無線) ios 端的時候發現demo不支援arm64。在網上找了下,看到客服說是openssl的庫檔案不支援arm64,於是自己編譯了支援arm64的庫檔案,發現還是不行,提示原來**的庫檔案也不支援。問他們客服,缺遲遲不給出解決方案,到後面居然連話都不回了。。

以上都是題外話,現在來看看如何編譯支援arm64的openssl吧。我是在mac os 10.9.3,xcode5.1.1下進行編譯的。

網頁上紅色標明的包為最新的版本。

在openssl-1.0.1h目錄下建立4個資料夾,分別為arm64,armv7,armv7s,i386。它們分別用於存放指定平台的庫檔案。

****編譯i386平台

開啟/openssl-1.0.1h/

crypto/ui/ui_openssl.c進行修改,將

static volatile sig_atomic_t intr_signal; 

修改為static volatile int intr_signal;

開啟終端,進入到openssl-1.0.1h目錄,輸入命令

./configure bsd-generic32 --openssldir=/users/kyo/desktop/openssl-1.0.1h/i386

(/users/kyo/desktop/openssl-1.0.1h/i386為上面建立的i386資料夾路徑)

命令完成後,在openssl-1.0.1h目錄下會生成很多檔案,找到其中的makefile檔案並開啟,

編輯 makefile 檔案,將

cc= gcc

修改為cc= gcc 

-arch i386

在下一行cflag = ......的最後增加

在終端執行命令

make

再接著執行命令

make install

執行完成後,在i386資料夾下將會生成多個檔案和資料夾,/lib目錄下存放著編譯成功的庫檔案libcrypto.a 和 libssl.a 

****編譯其它平台

接著我們需要編譯其它平台的庫檔案,先在終端執行命令make clean 清空之前的配置和快取(發現執行這個命令並不能完成清空,我的做法是,先儲存上面生成的i386的庫檔案,執行make clean命令,然後刪除整個openssl-1.0.1h,重新解壓乙個openssl-1.0.1h,然後再繼續其它平台的庫檔案編譯)

既然是新解壓的openssl-1.0.1h,我們需要重新上面的幾個步驟,修改ui_openssl.c,執行configure命令,修改makefile檔案。

修改makefile跟i386中有所不同,

cc= gcc

修改為cc= gcc 

-arch armv7

(其中armv7是指編譯armv7平台下的庫檔案,如果改為arm64,就是編譯arm64平台下的庫檔案)

在下一行cflag = ......的最後增加

(i386中的路徑是iphonesimulator.platform

,而其它平台都是iphoneos.platform

)在終端執行命令

make

再接著執行命令

make install

執行完成後,在armv7資料夾下將會生成多個檔案和資料夾,/lib目錄下存放著編譯成功的庫檔案libcrypto.a 和 libssl.a

如此重複生成各個平台的庫檔案後,開始合併操作。

****製作「通用」靜態庫

執行終端命令

合併 libcrypto.a 庫(確保終端中的路徑正確):

lipo -create /i386/lib/libcrypto.a /armv7/lib/libcrypto.a /armv7/lib/libcrypto.a /arm64/lib/libcrypto.a

-output /libcrypto.a

執行終端命令

合併 libssl

.a 庫(確保終端中的路徑正確):

lipo -create /i386/lib/libssl

.a /armv7/lib/libssl

.a /armv7/lib/libssl

.a /arm64/lib/libssl

.a -output /libssl.a

至此,我們完成了openssl的編譯。

在此感謝:

ios 編譯openssl支援arm64

最近在編譯支付寶 快捷支付 無線 ios 端的時候發現demo不支援arm64。在網上找了下,看到客服說是openssl的庫檔案不支援arm64,於是自己編譯了支援arm64的庫檔案,發現還是不行,提示原來 的庫檔案也不支援。問他們客服,缺遲遲不給出解決方案,到後面居然連話都不回了。以上都是題外話,...

ios 編譯openssl支援arm64

最近在編譯支付寶 快捷支付 無線 ios 端的時候發現demo不支援arm64。在網上找了下,看到客服說是openssl的庫檔案不支援arm64,於是自己編譯了支援arm64的庫檔案,發現還是不行,提示原來 的庫檔案也不支援。問他們客服,缺遲遲不給出解決方案,到後面居然連話都不回了。以上都是題外話,...

ios 編譯openssl支援arm64

最近在編譯支付寶 快捷支付 無線 ios 端的時候發現demo不支援arm64。在網上找了下,看到客服說是openssl的庫檔案不支援arm64,於是自己編譯了支援arm64的庫檔案,發現還是不行,提示原來 的庫檔案也不支援。問他們客服,缺遲遲不給出解決方案,到後面居然連話都不回了。以上都是題外話,...