2024年1月22日发(作者:)
Mac下编译OpenSSL库
参考博客:/kmyhy/article/details/6534067
1、下载OpenSSL源代码库:/source/
当前(2014.10.21)最新版是openssl-1.0.0j。
下载后解压,将openssl-1.0.0j目录解压放在合适的地方。
本文档中,该目录放在系统桌面位置:/Users/ekijun/Desktop/openssl-1.0.1j。
如果您也是把目录放在桌面,把上述的ekijun换成您系统的
2、打开终端Terminal:
1)先在桌面/Users/ekijun/Desktop/(可以是其他地方,此处是为了方便)新建一个openssllibs文件夹(任意名字)用于保存生成的静态库:
-> mkdir openssllibs
2)进入/Users/ekijun/Desktop/openssl-1.0.1j/目录,在其下新建立3个子目录分别用于保存arm7、arm7s、i386架构的静态库:
-> cd openssl-1.0.1j
-> mkdir arm7 arm7s i386
3) 编译i386库(用于iPhone模拟器)
① 执行/Users/ekijun/Desktop/openssl-1.0.1j/目录下的configure(等号右边是保存i386静态库的目录路径):
-> ./configure BSD-generic32 --openssldir=/Users/ekijun/openssl-1.0.0j/i386
② 编辑openssl-1.0.1j/目录下的makefile文件,找到:
CC= gcc
CFLAG= „
替换为:
CC=
/Applications//Contents/Developer/Toolchains/chain/
usr/bin/clang -arch i386
CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE
-D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3
-fomit-frame-pointer -Wall -isysroot
/Applications//Contents/Developer/Platforms/rm/Developer/SDKs/
③进行编译:
-> make
-> make install
如若编译无误,可以看到i386/lib/目录下 libcrypto.a 和 libssl.a 生成。
4) 编译arm7库(用于arm7架构的iOS使用)
① 先将先前编译好的i386库移到桌面的/openssllibs/:
-> mv i386 ../openssllibs
② 清除上次编译配置:
-> make clean
③ 再次执行/Users/ekijun/Desktop/openssl-1.0.1j/目录下的configure(等号右边是保存arm7静态库的目录路径),重新生成新的编译配置:
-> ./configure BSD-generic32 --openssldir=/Users/ekijun/openssl-1.0.0j/arm7
④ 重新编辑openssl-1.0.1j/目录下的makefile文件,找到:
CC= gcc
CFLAG= „
替换为:
CC=
/Applications//Contents/Developer/Toolchains/chain/usr/bin/clang -arch armv7
CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE
-D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3
-fomit-frame-pointer -Wall -isysroot
/Applications//Contents/Developer/Platforms/rm/Developer/SDKs/
⑤进行编译:
-> make
-> make install
如若编译无误,可以看到arm7/lib/目录下 libcrypto.a 和 libssl.a 生成。
5)仿照步骤4)编译arm7s的静态库(用于arm7s架构的iOS使用)
,其中步骤④改为:
CC= gcc
CFLAG= „
替换为:
CC=
/Applications//Contents/Developer/Toolchains/chain/usr/bin/clang -arch armv7s
CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE
-D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3
-fomit-frame-pointer -Wall -isysroot
/Applications//Contents/Developer/Platforms/rm/Developer/SDKs/
编译结果移到openssllibs目录:
-> mv arm7s ../openssllibs
6)制作“通用”静态库
“通用”静态库是一个“多架构”文件,它是多个单一架构静态库的融合。
制作“通用”静态库需要使用 Mac OS X 的 lipo 命令(具体请参考 Mac
OS X 手册)。
合并 libcrypto.a 和 libssl.a库(-create后为已编译的三个架构下的静态库路径,-output后为合并库保存路径)
->lipo
-create ../openssllibs/i386/lib/libcrypto.a ../openssllibs/arm7/lib/libcrypto.a ../opensslibs/arm7s/lib/libcrypto.a -output ../openssllibs/libcrypto.a
->lipo
-create ../openssllibs/i386/lib/libssl.a ../openssllibs/arm7/lib/libssl.a ../openssllibs/arm7s/lib/libssl.a -output ../openssllibs/libssl.a


发布评论