Windows NDK 编译openssl

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

你可能感兴趣的:(c/c++/c++11,开发工具,openssl,NDK,Windows)