編譯openssl iOS靜態庫


到openssl官網下載openssl源碼:https://www.openssl.org/source/

目前我選擇的穩定版本為:openssl-1.1.1k

1、編譯x86_64平台

首先需要修改Configurations/15-ios.conf配置文件,這個配置文件里面的target是基於10-main.conf的。修改如下:

 1 # 修改 iossimulator-xcrun target
 2 
 3 "iossimulator-xcrun" => {
 4         inherit_from     => [ "ios-common" ],
 5         CC               => "xcrun -sdk iphonesimulator cc",
 6         cflags           => add("-arch x86_64 -DOPENSSL_NO_ASM -mios-version-min=7.0.0 -fno-common"),
 7         sys_id           => "iOS",
 8         bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
 9         perlasm_scheme   => "ios64",
10     },
11 
12 
13 # 新增
14 
15 "ios64-sim-cross" => {
16         inherit_from     => [ "iossimulator-xcrun" ],
17         cflags           => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK)"),
18     },

然后拷貝下面命令,執行

1 export CC="clang"
2 export CROSS_TOP="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer"
3 export CROSS_SDK="iPhoneSimulator14.4.sdk"
4 ./Configure ios64-sim-cross # x86_64
5 make

 

編譯完成后,會在當前目錄下生成libcrypto.a、libssl.a文件,將這兩個文件備份,為以后合並靜態庫使用。

你可以通過如下命令,查看這兩個靜態庫所支持的平台架構。

lipo -info libcrypto.a 

輸出:Non-fat file: libcrypto.a is architecture: x86_64


lipo -info libssl.a

輸出:Non-fat file: libssl.a is architecture: x86_64

 

清理編譯后的目錄文件,繼續編譯以下平台

2、編譯armv7平台

1 export CC="clang"
2 export CROSS_TOP="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer"
3 export CROSS_SDK="iPhoneOS14.4.sdk"
4 ./Configure ios-cross # armv7
5 make

 

然后進行make,編譯,同樣將編譯結果備份。

清理編譯后的目錄文件,繼續編譯以下平台

3、編譯arm64平台

1 export CC="clang"
2 export CROSS_TOP="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer"
3 export CROSS_SDK="iPhoneOS14.4.sdk"
4 ./Configure ios64-cross # arm64
5 make

 

同樣將編譯結果備份。

合並靜態庫:

lipo -create libcrypto-x86_64.a libcrypto-armv7.a libcrypto-arm64.a -o libcrypto.a

lipo -create libssl-x86_64.a libssl-armv7.a libssl-arm64.a -o libssl.a

頭文件在/include目錄下

檢查靜態庫是否支持bitcode:

otool -arch armv7(這里指定查詢的架構) -l xxxx.a | grep __bitcode | wc -l

輸出是個數字的話則說明是支持bitcode的文件數,如果是0,說明沒有支持bitcode的文件

 

你也可以通過OpenSSL-for-iOS 進行編譯,這個使用也很方便,還可以制作openssl.framework。

詳細了解openssl 請點這里 openssl wiki

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM