2015/9/24 更新:
昨天试图在Xcode7上编译最新版本openssl,发现已经有了更简单的方案:
https://github.com/x2on/OpenSSL-for-iPhone
下载下来直接跑 build-libssl.sh 即可。全自动,连下载openssl都帮你搞定……
强烈推荐使用这种方法来做
-----------------------------------------
1. 首先要有个openssl的源码包 http://www.openssl.org/source/
P.S. 如果你想知道自己现有项目中用到的openssl是哪个版本的,可以看include里面的opensslv.h这个文件,其中有诸如
#define OPENSSL_VERSION_TEXT "OpenSSL 1.0.0e 6 Sep 2011"
这样的行,就知道版本了。
2. 可能需要对源码做一些修改已利于编译
crypto/ui/ui_openssl.c
将
static volatile sig_atomic_t intr_signal;
修改为:
static volatile int intr_signal;
3. 将本文附件(待上传,内容见文末) OpenSSL_ios_Build.zip中的shell批处理openssl_make_macOS.sh和三个补丁文件patch_mf_i386.diff/patch_mf_armv6.diff/patch_mf_armv7.diff 放置在openssl目录下,给予openssl_make_macOS.sh足够的权限来运行:
在终端下:
chmod 777 openssl_make_macOS.sh
./openssl_make_macOS.sh
会在openssl的同级目录生成ssllibs目录,其中ssllibs/libcrypto.a ssllibs/libssl.a 是最终编译完并合并完各框架版本的lib文件
======
OpenSSL_ios_Build.zip
下载地址:http://download.csdn.net/detail/piao_polar/5090392
内容(注意直接拷贝到话要小心行尾符,mac port可能未必支持以windows风格的行尾符做行尾的shell文件,有问题请直接下载一份)
openssl_make_macOS.sh
#openssl(ios) build shell Ruoqian,Chen <piao.polar@gmail.com>
#put this shell file in openssl dir
#chmod 777 openssl_make_macOS.sh
#File Tree
#-------
# ..
# openssl/openssl_make_macOS.sh // this shell file
# openssl/patch_mf_i386.diff // patch file
# openssl/patch_mf_armv6.diff
# openssl/patch_mf_armv7.diff
# ssllibs/libcrypto.a // out
# ssllibs/libssl.a // out
#-----------
rm -rf ../ssllibs
mkdir ../ssllibs
mkdir ../ssllibs/openssl_i386 ../ssllibs/openssl_armv6 ../ssllibs/openssl_armv7
make clean
./configure BSD-generic32
#CC= /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386
#CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk
patch Makefile < patch_mf_i386.diff
make > ../ssllibs/openssl_i386/make_i386.log
mv libcrypto.a libssl.a ../ssllibs/openssl_i386
make clean
./configure BSD-generic32
#CC= /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv6
#CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk
patch Makefile < patch_mf_armv6.diff
make > ../ssllibs/openssl_armv6/make_armv6.log
mv libcrypto.a libssl.a ../ssllibs/openssl_armv6
make clean
./configure BSD-generic32
#CC= /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv7
#CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk
patch Makefile < patch_mf_armv7.diff
make > ../ssllibs/openssl_armv7/make_armv7.log
mv libcrypto.a libssl.a ../ssllibs/openssl_armv7
lipo -create ../ssllibs/openssl_i386/libcrypto.a ../ssllibs/openssl_armv6/libcrypto.a ../ssllibs/openssl_armv7/libcrypto.a -output ../ssllibs/libcrypto.a
lipo -create ../ssllibs/openssl_i386/libssl.a ../ssllibs/openssl_armv6/libssl.a ../ssllibs/openssl_armv7/libssl.a -output ../ssllibs/libssl.a
patch_mf_i386.diff
62,63c62,63
< CC= gcc
< CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall
---
> CC= /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -arch i386
> CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -w -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk
patch_mf_armv6.diff
62,63c62,63
< CC= gcc
< CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall
---
> CC= /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv6
> CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk
patch_mf_armv7.diff
62,63c62,63
< CC= gcc
< CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall
---
> CC= /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -arch armv7
> CFLAG= -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DTERMIOS -O3 -fomit-frame-pointer -Wall -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk