ios 编译openssl支持arm64(转)

最近在编译支付宝 快捷支付(无线) ios 端的时候发现demo不支持arm64。在网上找了下,看到客服说是openssl的库文件不支持arm64,于是自己编译了支持arm64的库文件,发现还是不行,提示原来淘宝的库文件也不支持。问他们客服,缺迟迟不给出解决方案,到后面居然连话都不回了。。

以上都是题外话,现在来看看如何编译支持arm64的openssl吧。我是在mac os 10.9.3,xcode5.1.1下进行编译的。

先下载openssl的源文件

http://www.openssl.org/source/

网页上红色标明的包为最新的版本。

在openssl-1.0.1h目录下创建4个文件夹,分别为arm64,armv7,armv7s,i386。它们分别用于存放指定平台的库文件。

****编译i386平台

打开/openssl-1.0.1h/crypto/ui/ui_openssl.c进行修改,将

static volatile sig_atomic_t intr_signal;

修改为

static volatile int intr_signal;

打开终端,进入到openssl-1.0.1h目录,输入命令

./configure BSD-generic32 --openssldir=/Users/Kyo/Desktop/openssl-1.0.1h/i386

(/Users/Kyo/Desktop/openssl-1.0.1h/i386为上面创建的i386文件夹路径)

命令完成后,在openssl-1.0.1h目录下会生成很多文件,找到其中的makefile文件并打开,

编辑 makefile 文件,将

CC= gcc

修改为

CC= gcc -arch i386

在下一行CFLAG = ......的最后增加

-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk

在终端执行命令

make

再接着执行命令

make install

执行完成后,在i386文件夹下将会生成多个文件和文件夹,/lib目录下存放着编译成功的库文件libcrypto.a 和 libssl.a

****编译其它平台

接着我们需要编译其它平台的库文件,先在终端执行命令make clean 清空之前的配置和缓存(发现执行这个命令并不能完成清空,我的做法是,先保存上面生成的i386的库文件,执行make clean命令,然后删除整个openssl-1.0.1h,重新解压一个openssl-1.0.1h,然后再继续其它平台的库文件编译)

既然是新解压的openssl-1.0.1h,我们需要重新上面的几个步骤,修改ui_openssl.c,执行configure命令,修改makefile文件。

修改makefile跟i386中有所不同,

CC= gcc

修改为

CC= gcc -arch armv7

(其中armv7是指编译armv7平台下的库文件,如果改为arm64,就是编译arm64平台下的库文件)

在下一行CFLAG = ......的最后增加

-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneSimulator7.1.sdk

(i386中的路径是iPhoneSimulator.platform,而其它平台都是iPhoneOS.platform)

在终端执行命令

make

再接着执行命令

make install

执行完成后,在armv7文件夹下将会生成多个文件和文件夹,/lib目录下存放着编译成功的库文件libcrypto.a 和 libssl.a

如此重复生成各个平台的库文件后,开始合并操作。

****制作“通用”静态库

执行终端命令合并 libcrypto.a 库(确保终端中的路径正确):

lipo -create /i386/lib/libcrypto.a /armv7/lib/libcrypto.a /armv7/lib/libcrypto.a /arm64/lib/libcrypto.a -output /libcrypto.a

执行终端命令合并 libssl.a 库(确保终端中的路径正确):

lipo -create /i386/lib/libssl.a /armv7/lib/libssl.a /armv7/lib/libssl.a /arm64/lib/libssl.a -output /libssl.a

至此,我们完成了openssl的编译。

在此感谢:

http://blog.csdn.net/kmyhy/article/details/6534067

http://dingran.iteye.com/blog/1743496

已经编译好的下载地址:

https://github.com/st3fan/ios-openssl

http://download.csdn.net/detail/shengyumojian/7616347

时间: 2024-11-06 22:35:02

ios 编译openssl支持arm64(转)的相关文章

ios编译openssl指南

首先,openssl支持ios编译,这是毫无疑问的 ios上的编译也无外乎configure make make install模式,但是有一些不同 比如 ./Configure iphoneos-cross --openssldir="${cur_output}" configure要用Configure命令,传递交叉参数iphoneos-cross, openssldir为安装目录 之后调用此句 sed -ie "s!^CFLAG=!CFLAG=-miphoneos-ve

luajit2.1 iOS编译64bit以及通用库

苹果要求老的app需要在6月份后支持64位,新的app从2.1开始就必须支持64bit.由于我们用了luajit,而luajit2.0.x版本只支持32bit.在2.1版本开始支持64bit了,但目前只是alpha版本. 下面的luajit库编译后支持arm64,armv7和模拟器.即一个库支持64bit编译的所有cpu,不需要针对新老iphone做特殊处理. 下载LuaJit 通过GIT下载Luajit代码 git clone http://repo.or.cz/luajit-2.0.git

iOS支持arm64

Apple要求2015/2/1之后提交的包必须包含arm64,否则要被拒.因此,对于64-bit的支持可谓迫在眉睫,尤其是对于有很多遗留代码的项目,更要提早开工. 如何支持arm64 为了支持arm64结构,需要满足一下几个条件: 在Architectures设置项里添加arm64条目,如果使用的Xcode是6.0以上的版本,使用默认的配置项即可. 在Valid Architectures设置项里添加arm64条目. 讲Deployment Target改为大于等于5.1.1即可,因为arm64

Ubuntu+NDK编译openssl(为了Android上使用libcurl且支持HTTPS协议)

为了Android上使用libcurl且支持HTTPS协议,需要依赖openssl,因此先来了解一下如何编译OpenSSL1.编译ARM下的共享库(默认的)我使用的是guardianproject的openssl,它已经提供好了android的ndk makefile.git clone https://github.com/guardianproject/openssl-android.git然后直接cd到该目录,$NDK/ndk-build就行.注意默认的使用NDKr5b,如果没有该版本,请

mac下编译支持arm64的ffmpeg

mac下编译支持arm64的ffmpeg 2015年1月份开始苹果开始要求所有新提交AppStore的应用支持arm64,之前的ffmpeg如果没有编译支持arm64的版本的话,也将被拒绝.在此直接给出编译脚本,在ffmpeg2.5.2下测试通过.本次只编译支持h264解码的功能,需要其他的请自行改编译命令 脚本下载地址: http://www.mingjianhua.com/post/buildffmpegforarm64.html 用法 如果需要同时支持armv7和arm64,则通过以下命令

实战FFmpeg编译支持arm64(转)

App store要求上架的app必须支持arm64.而手中的ffmpeg还不支持arm64, 百度下ffmpeg支持arm64方法,网上有很多资料.其中一篇是使用脚本自动编译实现的.本文就是使用它的. FFmpeg-iOS-build-script 脚本需依赖gas-preprocessor.pl. FFmpeg-IOS-build-script下载地址:https://github.com/kewlbear/FFmpeg-iOS-build-script gas-preprocessor.p

Qt5.9.0正式版动态编译 (VS2017) 支持WebEngine 、 ICU 、OpenSSL

尝鲜体验 Qt5.9.0 正式版 动态编译 (VS2017) 支持WebEngine . ICU . OpenSSL模块 此版本只有Release库:具有开发文档: QtLib_VC-x86-shared.7z:http://pan.baidu.com/s/1o8pzeZ4QtLib_VC-x64-shared.7z:http://pan.baidu.com/s/1miHT0kK Release与Debug:32位:http://pan.baidu.com/s/1bpxnem764位:http:

iOS工程如何支持64-bit

苹果在2014年10月20号发布了一条消息:从明年的二月一号开始,提交到App Store的应用必须支持64-bit.详细消息地址为:https://developer.apple.com/news/?id=10202014a 那们我们应该如何开始着手让自己的App支持64-Bit呢? 基本知识 从iPhone 5S的A7 CPU开始到刚刚发布的iPhone 6(A8 CPU)都已经支持64-bit ARM 架构.关于64-bit的介绍详见维基百科.知乎上有很多关于苹果使用A7,A8芯片的讨论,

ios-app支持arm64位时, 一些问题的研究

2015年2月起, 苹果将拒绝不支持arm64的应用, 未雨绸缪,最近有点时间,先研究起来. 首先明确一点是, arm64是新的cpu架构, 它主要在寻址范围和数值容量上有了质的改进,但对它的支持要求,相关代码要定义出两套来 (用__LP64__宏来区别). 比如void* 的值, 不能再赋值给int变量了. 把项目改成支持arm64: XCode工程里, Target中, Build Setttings中 Architectures值改为Standard architectrues (armv