openssl库android版的编译
今天在编译andorid版libevent最新版2.1.6时报错can not find opensll,作为初次编译的新手,一头雾水啊,后幸得公司大神CTO的指点,需要android 版本的openssl,好吧,还等什么呢,走起~摸索中编译android 版本openssl 呗。
OpenSSL是一个强大的开源的安全套接字层密码库,包含了主要的密码学算法,常用的密钥和证书封装管理以及SSL协议。
Android上的开发对于安全的需求越来越高,虽然OpenSSL出现过几次漏洞,但OpenSSL仍然是在安全方便的使用最多的加密库。OpenSSL是一个基于c开发的,古老的,开源的加密库,想在Android上使用OpenSSL必须要借助NDK,使用NDK编译成Android上面的动态连接库(或者静态链接库),再借助JNI层的封装,提供给Java层调用。参考OpenSSL的官方文档:https://wiki.openssl.org/index.php/Android
素材: OpenSSL的源代码(git clone git@github.com:openssl/openssl.git)或(官方链接release版)
setenv-adnroid.sh 构建脚本(https://wiki.openssl.org/images/7/70/Setenv-android.sh)
make
步骤:
1.OpenSSL的源代码和setenv-adnroid.sh 构建脚本下载下来以后,首先给脚本运行的权限
chmod a+x Setenv-android.sh
2.安装makedepend
已测试的两版本下执行命令
Fedora 下安装方法为运行命令: # yum install imake
ubuntu 14.04 #apt-get install xutils-dev
3.修改脚本里面的变量
主要修改了下面的几个变量,只要保证运行该脚本无Error就说明没问题了,有Error的话就继续配置喽
ANDROID_NDK_ROOT=$NDK_HOME
_ANDROID_API="android-23"
_ANDROID_EABI="arm-linux-androideabi-4.9"
然后就是运行脚本了
./Setenv-android.sh
4.编译OpenSSL
上面脚本的运行主要就是配置环境变量了,执行完上面的步骤后就可以对Android library进行配置了,
./config
然后执行make就可以了,一路畅通无阻,等待几分钟就可以了。
make
因为在Android设备上面运行,建议不要编译完整的OpenSSL库,官方给的建议选项:shared,no-ssl2,no-ssl3,no-comp,no-hw,no-engine.
OpenSSl的库需要安装到本地的电脑中,这样可以像使用NDK库一样的使用OpenSSL,编译命令可以设置–openssldir用来指定OpenSSL的安装目录。
perl -pi -e 's/install: all install_docs install_sw/install: install_docs install_sw/g' Makefile.org ./config shared no-ssl2 no-ssl3 no-comp no-hw no-engine --openssldir=/usr/local/ssl/$ANDROID_API
执行到这里,按道理是安装成功,但是。。。。。但是。。。。。。当我进入/usr/local/ssl下发现什么都没有。纳尼???what happened?
此时可通过打印上面配置的环境变量检测一下
echo $ANDROID_API
果不其然,输出为空,就是说没配置成功喽,就是说上面的脚本白执行喽?但是上面执行脚本的时候没有Error啊,一路绿灯啊,编译的时候也没有任何问题啊,而且脚本执行的过程中,明明可以看到ANDROID_API是有输出的啊,会不会环境变量的声明周期过期了?解决办法当然是把后面安装的命令放到Setenv-android.sh脚本里执行,就是下面这条命令:
make clean
perl -pi -e 's/install: all install_docs install_sw/install: install_docs install_sw/g' Makefile.org
./config shared no-ssl2 no-ssl3 no-comp no-hw no-engine --openssldir=/usr/local/ssl/$ANDROID_APImake depend
make all
sudo -E make install CC=$ANDROID_TOOLCHAIN/arm-linux-androideabi-gcc RANLIB=$ANDROID_TOOLCHAIN/arm-linux-androideabi-ranlib
一阵编译之后,再次进入路径 /usr/local/ssl 就看到我们想要的文件了。后面就是如何在libevent中添加使用我们刚刚编译的Android版 OpenSSL了。后面更新。。。。。。。。
openssl库android版的编译相关推荐
- android+busybox+编译,Android版busybox编译
Android版busybox编译 1下载busybox源码 2解压 tar -xvf busybox-1.23.2.tar.bz2 3 android版的配置脚本 解压后的源码里,configs文件 ...
- windows 环境下,编译android 版opencv-4.5.5,并添加opencv_contrib-4.5.5 扩展模块
参考博客:(130条消息) windows10 vs2019 版本:cmake将 opencv_contrib-4.5.5 扩展模块编译添加到 opencv-4.5.5 正式版中_Chhjnavy的博 ...
- Unity3d调用Android版so库
C源码封装Android版函数库 工具介绍 需要Android NDK工具包,下载地址为: https://developer.android.google.cn/ndk/downloads/inde ...
- openssl库编译-及16进制的key转Rsa数据结构
1. linux 下编译 源码地址为:https://www.openssl.org/source/old/:当前最新版本为 1.1.0f,https://www.openssl.org/source ...
- 【Android APT】编译时技术 ( 编译时注解 和 注解处理器 依赖库 )
文章目录 一.编译时注解和注解处理器 二.创建 编译时注解 和 注解处理器 三.添加 编译时注解 和 注解处理器 依赖库依赖 四.博客资源 一.编译时注解和注解处理器 上一篇博客 [Android A ...
- 【Android 高性能音频】Oboe 开发流程 ( 导入 Oboe 库 | 使用预构建的二进制库和头文件 | 编译 Oboe 源码 )
文章目录 一.导入 Oboe 库 二.使用预构建的二进制库和头文件 三.编译 Oboe 源代码 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Starte ...
- linux ndk编译静态库,Android开发教程:NDK编译静态库失败
Android---NDK编译静态库失败 Android.mk 相关编译文件: include $(CLEAR_VARS) LOCAL_MODULE := libdvnca LOCAL_SRC_ ...
- linux调用qt生成静态库文件下载,Centos7下编译openssl静态库与QT引用
1.下载openssl版本:https://www.openssl.org/source/old/ 下载地址 2.我们下载版本为:openssl-1.0.2k 3.拷贝到Linux服务器任意目录 4. ...
- Windows下编译openssl库
1.概述 OpenSSL是一个开放源代码的软件库包,它实现了 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议,所以应用程序可以使用这个 ...
最新文章
- [AsyncHandle]什么引发了ObjectDisposedException?
- 谷歌年度AI技术总结来了!Jeff Dean执笔,附赠27个开源工具和数据大礼包
- 怎么判断有几个滴定突跃点_高中化学怎么学?先看近5年高考化学高频考点知识点分值分析...
- django1.4 关于处理静态文件的问题
- 实验9 结构程序设计 6-1 计算两个复数之积
- Unity 网络编程(Socket)应用
- linux usb filesystem
- miniui 样式第一次加载不出来_matplotlib--修改样式
- 关于前端样式定位的一些自己的看法
- 经典排序算法(二十二)--图书馆排序(Library Sort)
- BM3D(Block-Matching and 3D filtering)读后感
- h3c s5500 ssh v5 配置_H3C S5500 V2基本配置及配置命令
- imput placeholder 移动端不居中问题
- 表单获取焦点和失去焦点
- 全民一起玩Python 之 基础篇视频教程
- 前端学习——静态网页制作
- 微擎上传图片失败——加密版本不能使用__DIR__或者__FILE__
- 312. 戳气球(区间dp)
- 传智播客与英特尔结成合作伙伴,共同推动软件技术进步
- 骁龙695是什么水平 骁龙695和骁龙778g哪个好
热门文章
- ArcGIS空间插值方法反距离权重法(IDW)的工作原理
- 经典的期货量化交易策略大全
- 现代存储架构:磁带存储在数据中心重生
- Halcon面阵相机采像
- python派森编程软件_派森Python官方下载_派森Python最新版_派森Python官方版-华军软件园...
- IFS认证辅导,国际食品企业认证BRC和IFS起源和发展
- android studio项目实例基于Uniapp+SSM实现的定制旅游APP
- 计算机0基础知识,计算机基础知识0课件.ppt
- 分数化成有限小数的方法_小数化成分数的方法
- Android 关于佳博和汉印蓝牙热敏打印机开发