最近在編譯支付寶 快捷支付(無線) 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 = ......的最後增加
注意:上面的目錄其實是xcode裡面的目錄,最好先到相應的目錄一下面,確認一下看是否存在,如果不存在,傳xcode中對應的目錄
在終端執行命令
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的庫檔案,發現還是不行,提示原來 的庫檔案也不支援。問他們客服,缺遲遲不給出解決方案,到後面居然連話都不回了。以上都是題外話,...