最近在编译支付宝 快捷支付(无线) 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

转载于:https://www.cnblogs.com/yuanxiaoping_21cn_com/p/4535952.html

ios 编译openssl支持arm64(转)相关推荐

  1. 【转】iOS编译OpenSSL静态库(使用脚本自动编译)

    原文网址:https://www.jianshu.com/p/651513cab181 本篇文章为大家推荐两个脚本,用来iOS系统下编译OpenSSL通用库,如果想了解编译具体过程,请参看<iO ...

  2. 智能家居(7) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

    目录 一.祥云人工智能开放平台 二.编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget) curl库重新配置,编译,安装 三.编程实现人脸识别 翔云 ...

  3. ios 编译ffmpeg 支持 x264 fdk-aac openssl 并裁剪库大小

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2018-10-11更新 android平台编译 右转 新的报错信息 ./lib ...

  4. 智能家居(七) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

    人工智能OCR识别平台介绍 OCR (Optical Character Recognition,光学字符识别) 百度搜索OCR识别,可以发现有很多大厂都在做这个项目,比如百度OCR,腾讯OCR,科大 ...

  5. QT支持https及编译OpenSSL

    文章目录 搞懂Qt OpenSSL的具体原因 一.如何找到和自己Qt版本真正合适的库并编译 二.编译自己真正所需的OpenSSL库 1.下载OpenSSL(以我所需要的1.0.2o为例) 2.配置编译 ...

  6. Unity 4.6.2 iOS 64位支持

    今天,我们宣布Unity 4.6.2的公开发布, 现在可以下载 . 这是使用我们新的IL2CPP技术的首个公开发布的iOS 64位支持版本 . (Today we announce the publi ...

  7. ios 编译链接库问题

    一.场景 最近在集成数据库sqlite开发,在集成的过程中,需要加入库文件支持libsqlite3,  在添加这个库的时候也遇到过一个坑: 在usr/lib 目录下: ​ 千万不要被上面那个3.0.d ...

  8. iOS——编译与链接

    前言 计算机语言分为机器语言.汇编语言和高级语言. 可以将高级语言分为两种:1,编译语言和解释型语言(直译式语言). 解释型语言(逐步进行解释执行) 解释语言编写的程序在每次运行时都需要通过解释器对程 ...

  9. iOS开发——openssl生成CSR (pkcs10) 请求证书

    由于涉及在线开户相关,所以整理一下~ 本文在前人的基础上更加完善:通过openssl 生成证书请求CSR  符合pkcs10的语法规范 为客户端生成,代码为C语言,可以直接在xcode的中于objec ...

最新文章

  1. Unity 4.x游戏开发技巧集锦(内部资料)
  2. 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出当前执行文件的路径和调用模块的路径...
  3. 开源中国众包第二波阿里云悬赏项目,总金额30万
  4. MySQLdb编译和制作
  5. PDH光端机的作用及其特点
  6. lua 获取网络时间_Lua脚本引擎教程:学习路线
  7. 暖通中级工程师计算机考试题库,暖通工程师试题(含答案)
  8. Python语法特点
  9. 幻灯片制作去除模板背景
  10. 淘宝和微信的扫码登录实现原理
  11. 图文结合带你搞懂InnoDB MVCC
  12. 微信公众号开发【一】 菜单获取与设置
  13. SpringBoot + FreeMarker + FlyingSaucer 实现PDF在线预览、打印、下载
  14. 厦门市委书记走访图扑等多家软件企业调研元宇宙产业发展情况
  15. 用Python求完美数
  16. 局域网IP和外网(广域网)IP(又称公有IP和私有IP)
  17. 五大存储模型关系模型 键值存储 文档存储 列式存储 图形数据库
  18. 购买了虚拟主机还要云服务器,购买了虚拟主机还要云服务器
  19. 网络信息检索(三)Web信息搜集
  20. TensorFlow系列——feature_column特征工具说明

热门文章

  1. 思考、学习新技术的原则和方式
  2. 在LINUX下安装 Sybase ASE 11.0.3.3
  3. 微软 2006年7月已试发布 ERP Dynamics AX 简体中文版 4.0 (第一个简体中文版),请下吧 !...
  4. linux系统检测脚本,脚本检测linux系统资源
  5. 火了 2 年的服务网格究竟给微服务带来了什么?(转载)
  6. PostgreSQL主备切换
  7. mysql性能问题处理_1个困扰我3个多月没解决的mysql性能问题
  8. oracle服务开机启动,Linux下建立Oracle服务及其开机自启动
  9. request.params 用法
  10. php语法介绍,PHP 函数语法介绍一