编译ios版openssl(2013/01/28)

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 




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值