Windows NDK 编译openssl

本文介绍了作者如何在Windows环境下,使用Git Bash编译openssl源码,并针对Android NDK需求定制脚本,以实现不同ABI的交叉编译。脚本适用于CMake集成,方便在Linux交叉编译环境中使用。

关于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

#!/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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10km

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值