android调用openssl库

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)/openssl

ifeq ($(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.a

else 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.a

LOCAL_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必须包含两个路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值