ubuntu 14.04 ndk 编译 openssl

2022年11月14日09:26:43

概述
因工作上需要用到openssl,本文剪短描述ubuntu编译生成openssl,主要的命令参考网上,结合自己的实际使用
版本
openssl:1.1.1g
ubuntu:14.04
ndk:16b
准备
下载openssl:http://distfiles.macports.org/openssl/openssl-1.1.1g.tar.gz
openssl源码解压放在目录:/work1/SourceCode/openssl-1.1.1g
下载ndk:https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip
ndk放在目录:/home/shenweihong/Android/Ndk/android-ndk-r16b

注意
本人之前用
android-ndk-r21b android-ndk-r18b
编译均报错,很难解决。
最后试了android-ndk-r16b才编译成功。
本人后来编译openssl版本1.0.1j,用android-ndk-r16b编译报错,用android-ndk-r14b才成功。
环境变量
ubuntu命令:
export PATH=/home/shenweihong/Android/Ndk/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH
export ANDROID_NDK_HOME=/home/shenweihong/Android/Ndk/android-ndk-r16b/
配置
./Configure android-arm -D__ANDROID_API__=24 no-threads no-shared --prefix=/work1/SourceCode/opensslLib
no-shared:表示编译结果为静态库,如果想编译结果动态库,就不要这一参数;
–prefix=/work1/SourceCode/opensslLib:表示最终编译结果保存的路径;

如下结果即表示配置成功:
ubuntu 14.04 ndk 编译 openssl
编译生成
命令:
make
make install

Android.mk文件

LOCAL_PATH := $(call my-dir)

#APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-24

include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE := ExchangePosJNI
LOCAL_SRC_FILES := ExchangePosJNI.c

include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libcrypto
LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/libcrypto.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libssl
LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/libssl.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include $(LOCAL_PATH)/lib
LOCAL_LDLIBS := -lm -lz -llog -fPIE -ldl
LOCAL_CFLAGS += -fPIE -D__ANDROID_API__=24
LOCAL_STATIC_LIBRARIES := libssl libcrypto
LOCAL_MODULE := OpensslClient
LOCAL_SRC_FILES := OpensslClient.c SSLClient.cpp

include $(BUILD_SHARED_LIBRARY)

在Windows NDK,使用一样的NDK版本,即android-ndk-r16,编译报错:
ubuntu 14.04 ndk 编译 openssl
将应用,build.gradle中 minSdkVersion 15改成 minSdkVersion 24才通过,其他地方解释说这个宏定义在NDK不同版本中差异造成的。

  • 作者:shenweihong
  • 原文链接:https://blog.csdn.net/shenweihong/article/details/107985593
    更新时间:2022年11月14日09:26:43 ,共 1797 字。