前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows NDK 编译openssl

Windows NDK 编译openssl

作者头像
10km
发布2021-02-04 10:35:21
1.8K0
发布2021-02-04 10:35:21
举报
文章被收录于专栏:10km的专栏10km的专栏

关于NDK 编译openssl,网上找了不少文章,比如: 《在windows上编译openssl供Android NDK使用》

大都是基于这个github上的项目编译NDK openssl: https://github.com/guardianproject/openssl-android

我也照着上面的文章顺利编译出了目标代码,但是因为编译出来的代码不是标准的安装目标结构,由于我需要用CMAKE交叉编译,所以这个项目编译出来的目标代码对于我并不方便使用。所以我自己下载了openssl的源码,并根据源码写出了linux bash交叉编译脚本。在windows下基于git bash控制台就可以顺利编译并安装到指定的文件夹下。以下是实现脚本。

完整的脚本参见码云上的openssl-ndk仓库

https://gitee.com/l0km/openssl-ndk.git

ndk-build.sh

代码语言:javascript
复制
#!/bin/bash
# NDK下交叉编译openssl 库
# 如果不指定默认编译 OpenSSL_1_1_1d 版本
# 编译要求: git perl
# NDK版本要求 16 及以下

sh_folder=$(dirname $(readlink -f $0))

# 目标平台
[ -z "$ANDROID_ABI" ] && ANDROID_ABI=armeabi-v7a

if [ "$ANDROID_ABI" = "armeabi" ]
then
  compiler_folder=arm-linux-androideabi-4.9
  ANDROID_API=14
  toolset=android-armeabi
elif [ "$ANDROID_ABI" = "armeabi-v7a" ]
then
  compiler_folder=arm-linux-androideabi-4.9
  ANDROID_API=14
  toolset=android-arm
elif [ "$ANDROID_ABI" = "arm64-v8a" ]
then
  compiler_folder=aarch64-linux-android-4.9
  ANDROID_API=21
  toolset=android-arm64
elif [ "$ANDROID_ABI" = "x86" ]
then
  compiler_folder=x86-4.9
  ANDROID_API=14
  toolset=android-x86
elif [ "$ANDROID_ABI" = "x86_64" ]
then
  compiler_folder=x86_64-4.9
  ANDROID_API=21
  toolset=android-x86_64
else
  echo "Invalid Android ABI: ${ANDROID_ABI}." 
  exit 255
fi
compiler_path=$ANDROID_NDK/toolchains/$compiler_folder/prebuilt/$buildPlatform/bin
[ ! -d "$compiler_path" ] && echo "ERROR:invalid compiler path $compiler_path for ANDROID_ABI=$ANDROID_ABI"  && exit 255
export PATH=$compiler_path:$PATH

# openssl 源码位置
[ -z "$OPENSSL_FOLDER" ] && OPENSSL_FOLDER=$sh_folder/openssl
# openssl 版本号
[ -z "$TAG" ] && TAG=OpenSSL_1_1_1d
# 安装路径
[ -z "$PREFIX" ] && PREFIX=$sh_folder/dist/openssl_android/$ANDROID_ABI
# 编译选项
[ -z "$OPTIONS" ] && OPTIONS="shared no-asm no-ssl2 no-ssl3 no-comp no-hw no-engine"

pushd $OPENSSL_FOLDER || exit 
if [ "$OPENSSL_FOLDER" = "$sh_folder/openssl" ]
then
    git checkout $TAG || exit 
fi
./Configure $toolset -D__ANDROID_API__=$ANDROID_API $OPTIONS --prefix=$PREFIX || exit 
make clean || exit
make -j8 && make install

popd
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档