http://www.voidcn.com/article/p-qxtttuii-n.html
解压openssl
创建目录
yutongdeMacBook-Pro:openssl-1.1.1d yutonghuo$ mkdir openssl_arm64 openssl_armv7 openssl_lib
其实就是先生成不同架构的目录
配置路径
yutongdeMacBook-Pro:openssl-1.1.1d yutonghuo$ ./Configure iphoneos-cross --prefix=/Users/yutonghuo/opensource/openssl-1.1.1d/openssl_armv7
- –prefix后面是上一步创建的目录
- 效果
修改配置文件
-
用xcode打开makefile文件:
-
修改配置
-
设置编译器
- 搜索 CC= $(CROSS_COMPILE)cc 替换为
CC= /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7
- 其中/Applications/…/clang为编译器路径,
-arch armv7 修改为对应的指令集
-
设置sdk路径
- 在CC= $(CROSS_COMPILE)cc 的下一行,我们可以发现CFLAGS的参数设置
cflags=-3
改为
CFLAGS=-DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSLDIR="\"$(OPENSSLDIR)\"" -DENGINESDIR="\"$(ENGINESDIR)\"" -O3 -D_REENTRANT -isysroot $(CROSS_TOP)/SDKs/$(CROSS_SDK) -fno-common
-
其中-isysroot ( C R O S S T O P ) / S D K s / (CROSS_TOP)/SDKs/ (CROSSTOP)/SDKs/(CROSS_SDK)参数为sdk路径,在该修改的一行代码上添加路径为:
# sdk上层路径 CROSS_TOP=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer
# sdk文件 CROSS_SDK=iPhoneOS9.3.sdk
- 在CC= $(CROSS_COMPILE)cc 的下一行,我们可以发现CFLAGS的参数设置
编译
make
make install
问题
make报错 ***missing separator. Stop
- make报错 ***missing separator. Stop
查资料是tab的问题,但是我恢复成原版的makefile
make后报错:
- 解决 用vim查看报错的行数 make[1] 用vim打开makefile,然后:1,去除换行空格等
- 另外sdk的目录没有找到,所以利用xcodebuild -showsdks 查找对应版本,改在
CROSS_SDK=iPhoneSimulator10.1.sdk
这里 ,如本机是CROSS_SDK=iPhoneOS9.3.sdk
- 其实编译中需要利用xcode的sdk,所以位置需要配置对
生成库不在配置路径中
应该在openssl_armv7?为何,./configure的 --prefix路径配置错误
下面编译多个指令库后合并成通用库
编译arm64报错:
解决:也不知哪里问题:改了
打开crypto/ui/ui_openssl.c进行编辑。
将static volatile sig_atomic_t intr_signal;
修改为:static volatile int intr_signal;
然后cc后面是–prefix,
配置每个路径一定要去文件里看是否存在!
- 合并
lipo -create openssl_arm64/lib/libssl.a openssl_armv7/lib/libssl.a -output openssl_lib/libssl.a
lipo -create openssl_arm64/lib/libcrypto.a openssl_armv7/lib/libcrypto.a -output openssl_lib/libcrypto.a
- 查看
看https://www.jianshu.com/p/27c3393054da