由于项目需求需要升级ndk13到ndk22b,在升级过程中编译GMSSL库遇到的一些问题在此做一个分享。
首先明确ndk22b已经不再支持gnustl_shared,gnustl_static编译方式,目前只支持c++_static,c++_shared,支持的安卓应用不得低于android-24,编译GMSSSL需要使用clang编译器。
其编译脚本:
文件config_system.sh内容:
#!/bin/bash
TOOLS_ROOT=`pwd`
ARCHS=("android" "android-armeabi" "android64-aarch64" "android-x86" "android64" "android-mips" "android-mips64")
ABIS=("armeabi" "armeabi-v7a" "arm64-v8a" "x86" "x86_64" "mips" "mips64")
# Default to API 21 for it is the minimum requirement for 64 bit archs.
ANDROID_API=${ANDROID_API:-24}
NDK=${ANDROID_NDK}
configure() {
ARCH=$1; OUT=$2; CLANG=${
3:-""};
TOOLCHAIN_ROOT=${TOOLS_ROOT}/${OUT}-android-toolchain
if [ "$ARCH" == "android" ]; then
export ARCH_FLAGS="-mthumb"
export ARCH_LINK=""
export TOOL="arm-linux-androideabi"
NDK_FLAGS="--arch=arm"
elif [ "$ARCH" == "android-armeabi" ]; then
export ARCH_FLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -mfpu=neon"
export ARCH_LINK="-march=armv7-a -Wl,--fix-cortex-a8"
export TOOL="arm-linux-androideabi"
NDK_FLAGS="--arch=arm"
elif [ "$ARCH" == "android64-aarch64" ]; then
export ARCH_FLAGS=""
export ARCH_LINK="