今天在编译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版的编译相关推荐

  1. android+busybox+编译,Android版busybox编译

    Android版busybox编译 1下载busybox源码 2解压 tar -xvf busybox-1.23.2.tar.bz2 3 android版的配置脚本 解压后的源码里,configs文件 ...

  2. 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的博 ...

  3. Unity3d调用Android版so库

    C源码封装Android版函数库 工具介绍 需要Android NDK工具包,下载地址为: https://developer.android.google.cn/ndk/downloads/inde ...

  4. openssl库编译-及16进制的key转Rsa数据结构

    1. linux 下编译 源码地址为:https://www.openssl.org/source/old/:当前最新版本为 1.1.0f,https://www.openssl.org/source ...

  5. 【Android APT】编译时技术 ( 编译时注解 和 注解处理器 依赖库 )

    文章目录 一.编译时注解和注解处理器 二.创建 编译时注解 和 注解处理器 三.添加 编译时注解 和 注解处理器 依赖库依赖 四.博客资源 一.编译时注解和注解处理器 上一篇博客 [Android A ...

  6. 【Android 高性能音频】Oboe 开发流程 ( 导入 Oboe 库 | 使用预构建的二进制库和头文件 | 编译 Oboe 源码 )

    文章目录 一.导入 Oboe 库 二.使用预构建的二进制库和头文件 三.编译 Oboe 源代码 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Starte ...

  7. linux ndk编译静态库,Android开发教程:NDK编译静态库失败

    Android---NDK编译静态库失败 Android.mk 相关编译文件: include $(CLEAR_VARS) LOCAL_MODULE    := libdvnca LOCAL_SRC_ ...

  8. linux调用qt生成静态库文件下载,Centos7下编译openssl静态库与QT引用

    1.下载openssl版本:https://www.openssl.org/source/old/ 下载地址 2.我们下载版本为:openssl-1.0.2k 3.拷贝到Linux服务器任意目录 4. ...

  9. Windows下编译openssl库

    1.概述 OpenSSL是一个开放源代码的软件库包,它实现了 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议,所以应用程序可以使用这个 ...

最新文章

  1. [AsyncHandle]什么引发了ObjectDisposedException?
  2. 谷歌年度AI技术总结来了!Jeff Dean执笔,附赠27个开源工具和数据大礼包
  3. 怎么判断有几个滴定突跃点_高中化学怎么学?先看近5年高考化学高频考点知识点分值分析...
  4. django1.4 关于处理静态文件的问题
  5. 实验9 结构程序设计 6-1 计算两个复数之积
  6. Unity 网络编程(Socket)应用
  7. linux usb filesystem
  8. miniui 样式第一次加载不出来_matplotlib--修改样式
  9. 关于前端样式定位的一些自己的看法
  10. 经典排序算法(二十二)--图书馆排序(Library Sort)
  11. BM3D(Block-Matching and 3D filtering)读后感
  12. h3c s5500 ssh v5 配置_H3C S5500 V2基本配置及配置命令
  13. imput placeholder 移动端不居中问题
  14. 表单获取焦点和失去焦点
  15. 全民一起玩Python 之 基础篇视频教程
  16. 前端学习——静态网页制作
  17. 微擎上传图片失败——加密版本不能使用__DIR__或者__FILE__
  18. 312. 戳气球(区间dp)
  19. 传智播客与英特尔结成合作伙伴,共同推动软件技术进步
  20. 骁龙695是什么水平 骁龙695和骁龙778g哪个好

热门文章

  1. ArcGIS空间插值方法反距离权重法(IDW)的工作原理
  2. 经典的期货量化交易策略大全
  3. 现代存储架构:磁带存储在数据中心重生
  4. Halcon面阵相机采像
  5. python派森编程软件_派森Python官方下载_派森Python最新版_派森Python官方版-华军软件园...
  6. IFS认证辅导,国际食品企业认证BRC和IFS起源和发展
  7. android studio项目实例基于Uniapp+SSM实现的定制旅游APP
  8. 计算机0基础知识,计算机基础知识0课件.ppt
  9. 分数化成有限小数的方法_小数化成分数的方法
  10. Android 关于佳博和汉印蓝牙热敏打印机开发