安卓编译报错openssl
① 已安装OpenSSL,但编译其他软件的时候出现configure: error: openssl not found
要装openssl的开发包
sudo apt-get install libssl-dev
② 编译时缺少openssl/md5.h该怎么处理
最近需要安装openssl,需要使用openssl/md5.h这个头文件,可是使用Ubuntu的apt-get install openssl安装橡首,没有这个文件,连urs/include/openssl都没,经过一天的查找资料都没解决,最后想到了使用源码安装openssl,最终解决了。
参考 http://www.linuxidc.com/Linux/2011-10/45738.htm
OpenSSL 是一款开源的 SSL 软件包,采用 SSL 的公开密钥技术,用于实现传输层的通信加密功能。OpenSSL 支持 Linux、Windows、BSD、Mac 等平台,功能强大,包含丰富的让氏密码算法库,SSL 协议库和应用程序。
一、SSL 基本常识 1.1、什么是 SSL?
安全套接层(Secure Sockets Layer,SSL), 最初由 netscape 公司设计,建立在传输层的安全通信协议,采用公开密钥体系的证书认证方式来确保客户端和 SSL 服务器之间梁滑数的通信安全。
1.2、SSL 认证流程
SSL 客户端在 TCP 连接建立之后,发出一个消息(包含了客户端所支持的算法列表)给服务器端,然后服务器端返回一个数据包(确定了这次通信所需算法)和 SSL 服务器端的证书(包含了公钥)给客户端。客户端随后会用收到的公钥将消息加密再传送,该加密消息只能用 SSL 服务器端私钥解密,即便中途被截取也无法获知内容。
二、编译安装 OpenSSL 2.1、准备工作
系统版本:Ubuntu-10.10-Server-I386
更新源:apt-get update
升级软件:apt-get upgrade
更新系统:apt-get dist-upgrade
2.2、查看OpenSSL版本
部分 Linux 系统已默认安装了 OpenSSL 0.9.8,特别是 VPS 一般都安装了。
openssl version -a
2.3、安装基础编译环境
apt-get install build-essential
2.3、编译安装 Zlib 库(这一步我没有成功,但是也成功安装了openssl)
wget http://zlib.net/zlib-1.2.5.tar.gz
tar -zxf zlib-1.2.5.tar.gz
cd zlib-1.2.5/
./configure --prefix=/usr/local
make && make install
2.4、卸载旧版本 OpenSSL
apt-get purge openssl
rm -rf /etc/ssl #删除配置文件
2.5、编译与安装 OpenSSL
prefix 是安装目录,openssldir 是配置文件目录,另外建议安装两次,shared 作用是生成动态连接库。
wget ftp://ftp.openssl.org/source/openssl-1.0.0c.tar.gz
tar -zxf openssl-1.0.0c.tar.gz
cd openssl-1.0.0c/
./config --prefix=/usr/local --openssldir=/usr/local/ssl
make && make install
./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
make clean
make && make
进一步的配置可参考《OpenSSL-0.9.8g 安装与配置指南》http://www.linuxidc.com/Linux/2011-10/45737.htm
③ OpenSSL的编译和使用
个人博客地址: https://blog.yookingh.cn
该文章地址: https://blog.yookingh.cn/dev/201215-openssl.html
从NDK r19开滑知始,由于gcc兼容clang的编译方式有问题,该版本乎高已经移除了相关gcc文件,所以用老方法交叉编译Openssl的时候,会提示找不到gcc文件。
参考: https://blog.csdn.net/zoujin6649
build-android-single.sh 脚本文件及注释如下岁让尺
执行脚本
修改脚本为 循环编译 ,编译所有需要的文件
build-android-all.sh 脚本文件内容如下
执行脚本方法同上,如为第一次执行(即没有Makefile文件),仍需要执行 ./config 循环编译无需执行 make clean
参考: https://blog.csdn.net/iamadk
Python 脚本内容
创建编译执行脚本
执行编译脚本同r15,第一次需要执行 ./config 生成Makefile,第二次或以上需要清除make记录即 make clean ,接下来依旧是创建 循环编译 脚本
④ Android:Ubuntu编译OpenSSL步骤
NDK版本:android-ndk-r14b
OpenSSL版本:1.1.1k/3.0.0
Ubuntu版本:15.5
1、配置ndk环境变量
OpenSSL版本:1.1.1k:export ANDROID_NDK_HOME=/home/linrendi/Desktop/Compile/android-ndk-r14b/
OpenSSL版本:3.0.0: export ANDROID_NDK=/home/linrendi/Desktop/Compile/android-ndk-r14b/
如果是
编译32位:
OpenSSL版本:1.1.1k:1、export PATH= PATH
OpenSSL版本:3.0.0:1、export PATH= PATH
2、./Configure android-arm -D__ANDROID_API__=21 --prefix=/home/linrendi/Desktop/openssl-1.1.1k/armv7a
3、make -j7 && make install
编译64位:
OpenSSL版本:1.1.1k:1、export PATH= PATH
OpenSSL版本:3.0.0:1、export PATH= PATH
2、./Configure android-arm64 -D__ANDROID_API__=21 --prefix=/home/linrendi/Desktop/openssl-1.1.1k/arm64
3、make -j7 && make install
注意:当编译完32位后,又想编译64位,必须重新解压,避免一些配置没有更新导致编译失败