到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。