android调用openssl库

news/2024/10/5 22:52:20/

android__openssl_0">android 调用openssl库

一、openssl安装编译

  1. 下载openssl-1.1.1w.tar.gz和android-ndk-r21e-linux-x86_64.zip
  2. 解压android-ndk-r21e-linux-x86_64.zip到/opt/pj_ssl目录下,然后配置环境
  • vim ~/.bashrc
  • 增加如下内容
export NDK_HOME=/opt/pj_ssl/android-ndk-r21e
export ANDROID_NDK_HOME=/opt/pj_ssl/android-ndk-r21e
export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH
  • 刷新环境变量 source ~/.bashrc
  1. 编译环境
  • 编译32位 ./Configure android-arm -D__ANDROID_API__=21 --prefix=/opt/pj_ssl/openssl-1.1.1w/obj
  • 编译64位 ./Configure android-arm64 -D__ANDROID_API__=21 --prefix=/opt/pj_ssl/openssl-1.1.1w/obj
  • make
  • make install
  1. 将32位的libssl.a和libcrypto.a拷贝到armeabi-v7a
  2. 将64位的libssl.a和libcrypto.a拷贝到arm64-v8a

二、使用openssl库

1.在 Android.mk引用库

OPENSSL_PATH := $(ROOT_PATH)/opensslifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
LOCAL_CFLAGS += -DPJ_M_ARMV7
OPENSSL_INC := $(OPENSSL_PATH)/armeabi-v7a/include
OPENSSL_SSL := $(OPENSSL_PATH)/armeabi-v7a/lib/libssl.a
OPENSSL_CRYPTO := $(OPENSSL_PATH)/armeabi-v7a/lib/libcrypto.aelse ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
LOCAL_CFLAGS += -DPJ_M_ARMV8 -D_ARM_
OPENSSL_INC := $(OPENSSL_PATH)/arm64-v8a/include
OPENSSL_SSL := $(OPENSSL_PATH)/arm64-v8a/lib/libssl.a
OPENSSL_CRYPTO := $(OPENSSL_PATH)/arm64-v8a/lib/libcrypto.aLOCAL_LDFLAGS += \$(OPENSSL_SSL) \$(OPENSSL_CRYPTO)
  1. 编译库 /opt/pj_ssl/android-ndk-r21e/ndk-build $@
  2. 最后生成新的libtestssl.so供android调用

三、其他问题

  1. 编译openssl时,必须加入 -D__ANDROID_API__=21。否则会出现缺少stderr等异常问题
  2. PATH必须包含两个路径

http://www.ppmy.cn/news/1473721.html

相关文章

Linux 防火墙配置指南:firewalld 端口管理应用案例(二十个实列)

🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧🐧Linux高级管理专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️…

HMI 的 UI 风格成就经典

HMI 的 UI 风格成就经典

SpringBoot实现图片添加水印(完整)

提示:昨天不是写了一个类似与图片添加水印的版本吗,今天来写一个带数据库,并且可以完整访问的版本 文章目录 目录 文章目录 引入库 配置文件 数据库配置 字段配置 索引配置 数据库表语句 启动文件 前端代码 整体代码目录 配置类AppConfig Contro…

[leetcode hot 150]第一百三十题,被围绕的区域

题目: 给你一个 m x n 的矩阵 board ,由若干字符 X 和 O 组成,捕获 所有 被围绕的区域: 连接:一个单元格与水平或垂直方向上相邻的单元格连接。区域:连接所有 0 的单元格来形成一个区域。围绕&#xff1a…

Zynq7000系列FPGA中的DMA控制器简介(二)

AXI互连上的DMA传输 所有DMA事务都使用AXI接口在PL中的片上存储器、DDR存储器和从外设之间传递数据。PL中的从设备通过DMAC的外部请求接口与DMAC通信,以控制数据流。这意味着从设备可以请求DMA交易,以便将数据从源地址传输到目标地址。 虽然DMAC在技术…

万界星空科技机械加工行业MES解决方案

机械加工行业作为制造业的重要组成部分,面临着生产效率、成本控制和产品质量提升等多重挑战。为了应对这些挑战,引入并实施制造执行系统(MES)成为了行业的必然选择。本文将详细介绍一种针对机械加工行业的MES解决方案,…

One day for Chinese families

周围生活中的普通家庭的一天流程: 【上班的一天】 【放假的一天】 有家庭的人,上班流程: 01)准备早餐,牛奶,面包 02)叫娃娃起床,一般要蛮久的;沟通交流 -- 哄娃娃 -- 生气…

C语言经典例题-19

1.字符串左旋结果 题目内容:写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。 例:给定s1 AABCD和s2 BCDAA,返回1 给定s1 abcd和s2 ACBD,返回0 AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA AABCD右旋一…