iOS 使用openssl 生成静态包
2016-07-14 本文已影响141人
居然是村长
搞了也有大半天,赶紧记录下,免得再坑。
下载源文件
注:建议使用tag里面较新的正常版本,我这里用的是 OpenSSL_1_0_2
https://github.com/openssl/openssl
- 将下载文件放在了桌面,方便使用,前往文件夹
cd /Users/juyiwei/Desktop/openssl-OpenSSL_1_0_2
- 新建几个用于存放不同指令包的文件夹
mkdir openssl_arm64 openssl_armv7 openssl_armv7s openssl_i386
循环使用:
- 配置文件夹
注:选择一个,下面对应修改,只是指令不同
注2:表示 i386的模拟器版本一直不成功,还指望会的同学教一下!
./configure BSD-generic32 --openssldir=/Users/juyiwei/Desktop/openssl-OpenSSL_1_0_2/openssl_arm64
./configure BSD-generic32 --openssldir=/Users/juyiwei/Desktop/openssl-OpenSSL_1_0_2/openssl_armv7
./configure BSD-generic32 --openssldir=/Users/juyiwei/Desktop/openssl-OpenSSL_1_0_2/openssl_armv7s
./configure BSD-generic32 --openssldir=/Users/juyiwei/Desktop/openssl-OpenSSL_1_0_2/openssl_i386
// 成功提示 make[1]: Nothing to be done for `generate'.
- 修改编译使用的gcc:打开Makefile 文件
替换文件中的 CC=gcc:将 gcc 替换成
/Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch arm64
/Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch armv7
/Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch armv7s
/Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch i386
注:是自己本地电脑的 gcc,并且附带指定指令集
- 添加指定SDK
CFLAG= (也就是 CC=的下一行) 在其末尾添加下面内容
注:1_0_2是 -Wall
// 模拟器版本
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
// 真机版本
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
- 编译
make
// 编译成功会提示 make[1]: Nothing to be done for `all'.
make install
// 编译成功之后,在之前创建的 arm64 文件夹下生成完整的文件(lib中有2个.a文件,include中包含头文件)
// 建议将arm64 文件夹整体拖走
make clean
// 清空编译内容,在开始循环内容编译 armv7,armv7s,i386
生成了多套数据包,可以合并.a,导入工程使用
同时导入 openssl 头文件
Enable Bitcode ->NO
header Search -> $(inherited) $(PROJECT_DIR)/productName