linux ndk编译openssl,在linux上使用android ndk交叉编译openssl1.0.2常见问题

在linux上使用android ndk交叉编译openssl1.0.2常见问题

2020年09月01日

| 萬仟网IT编程

 | a48e1d17a2b0511faa7da7240b1971f6.png我要评论

1. makedepend: not foundapt-get install xutils-dev2. target already defined - linux-x86_64 (offending arg: android-armv7)参考:https://wiki.openssl.org/index.php/Android打开文件: bipay/patches/openssl-android.shmkdir prebuilt/$1. ./openssl-android-env.sh

1. makedepend: not found

apt-get install xutils-dev

2. target already defined - linux-x86_64 (offending arg: android-armv7)

参考:

https://wiki.openssl.org/index.php/Android

打开文件: bipay/patches/openssl-android.sh

mkdir prebuilt/$1

. ./openssl-android-env.sh -- 这里指定ABI的版本,在执行 ./config 命令时,无需要指定 $configure_platform

echo "CROSS COMPILE ENV

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用NDK编译OpenSSL的方法如下: 1. 下载OpenSSL源代码和NDK。 2. 将OpenSSL源代码解压到一个目录下,比如 `~/openssl-1.1.1g`。 3. 在 `~/openssl-1.1.1g` 目录下创建一个名为 `Application.mk` 的文件,文件内容如下: ``` APP_ABI := armeabi-v7a APP_PLATFORM := android-21 ``` 其中 `APP_ABI` 表示编译的目标平台,这里选择 `armeabi-v7a`;`APP_PLATFORM` 表示使用Android版本,这里选择 `android-21`。 4. 在 `~/openssl-1.1.1g` 目录下创建一个名为 `Android.mk` 的文件,文件内容如下: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := openssl LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/crypto/*.c) LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/ssl/*.c) LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_CFLAGS := -DOPENSSL_NO_ASM -DOPENSSL_ANDROID LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) include $(BUILD_SHARED_LIBRARY) ``` 其中 `LOCAL_MODULE` 表示生成的库文件名,这里设为 `openssl`;`LOCAL_SRC_FILES` 表示需要编译的源文件;`LOCAL_C_INCLUDES` 表示头文件路径;`LOCAL_CFLAGS` 表示编译选项,这里禁用汇编和启用Android特有的宏定义;`LOCAL_LDLIBS` 表示链接库,这里链接 `liblog.so`。 5. 在终端中进入 `~/openssl-1.1.1g` 目录,执行以下命令: ``` $ export NDK_HOME=/path/to/ndk $ $NDK_HOME/ndk-build ``` 其中 `/path/to/ndk` 是NDK的安装路径。执行完毕后,在 `~/openssl-1.1.1g/libs/armeabi-v7a` 目录下会生成 `libopenssl.so` 文件。 6. 将 `libopenssl.so` 文件复制到Android工程的 `libs/armeabi-v7a` 目录下。 7. 在Android工程的 `build.gradle` 文件中添加以下代码: ``` android { // ... sourceSets { main { jniLibs.srcDirs = ['libs'] } } } ``` 这样就可以在应用中使用OpenSSL库了。 注意:在使用OpenSSL,需要在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.INTERNET" /> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值