openssl&libcurl在MACOS平台使用NDKr16编译x86的Android模拟器版本

本文详细介绍了在iOS13与macOS升级后,如何解决原有android-ndk-r15c因签名问题无法使用的情况,通过使用androidstdio下载NDK,并生成x86工具链,以及配置openssl和libcurl的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了调试iOS13的设备,XCode 必须升级到11,搞得来macOS也得升。
待macOS升级到10.15.3 后,发现,原有的android-ndk-r15c-darwin-x86_64用不了(因为签名问题),应该是macOS升级后安全加强造成。
只能使用android stdio下载NDK了。

生成x86工具链

转到NDK下的build/tools目录,运行:

make-standalone-toolchain.sh --toolchain=x86-4.9 --platform=android-16 --install-dir=$HOME/libs/android-x86-build/toolchain-ndk16-x86

//输出:
HOST_OS=darwin
HOST_EXE=
HOST_ARCH=x86_64
HOST_TAG=darwin-x86_64
HOST_NUM_CPUS=4
BUILD_NUM_CPUS=8
Auto-config: --arch=x86

创建 openssl-ndk16-android-x86.sh

#!/bin/bash


export ANDROID_NDK_ROOT=$HOME/apps/android-sdk/ndk/16.1.4479499 
export ANDROID_ARCH=arch-x86    
export ANDROID_EABI=x86-4.9
export ANDROID_API=android-16    
export ANDROID_SYSROOT="$HOME/libs/android-x86-build/toolchain-ndk16-x86/sysroot"
export ANDROID_TOOLCHAIN="$HOME/libs/android-x86-build/toolchain-ndk16-x86/bin"
#export FIPS_SIG=/project/androidGMSSL/openssl-1.1.0d/util/incore                                                              
export CROSS_COMPILE=i686-linux-android-
export ANDROID_DEV="$HOME/libs/android-x86-build/toolchain-ndk16-x86/sysroot/usr"

export PATH=$ANDROID_TOOLCHAIN:$PATH

VERBOSE=1
if [ ! -z "$VERBOSE" ] && [ "$VERBOSE" != "0" ]; then
  echo "ANDROID_NDK_ROOT: $ANDROID_NDK_ROOT"
  echo "ANDROID_ARCH: $_ANDROID_ARCH"
  echo "ANDROID_EABI: $_ANDROID_EABI"
  echo "ANDROID_API: $ANDROID_API"
  echo "ANDROID_SYSROOT: $ANDROID_SYSROOT"
  echo "ANDROID_TOOLCHAIN: $ANDROID_TOOLCHAIN"
  echo "FIPS_SIG: $FIPS_SIG"
  echo "CROSS_COMPILE: $CROSS_COMPILE"
  echo "ANDROID_DEV: $ANDROID_DEV"
fi

cd openssl-OpenSSL_1_0_2l
make clean
./Configure -D__ANDROID_API__=16 no-shared android-x86 no-ssl2 no-ssl3 no-comp no-hw no-engine --prefix=$HOME/libs/android-x86-build/out_ndk16_x86
make depend
make 
make install

注意:必须定义“ANDROID_API=16”,否则会出很多错误

创建 libcurl-ndk16-android-x86.sh

#!/bin/bash


export ANDROID_NDK_ROOT=$HOME/apps/android-sdk/ndk/16.1.4479499 
export ANDROID_ARCH=arch-x86    
export ANDROID_EABI=x86-4.9
export ANDROID_API=android-16    
export ANDROID_SYSROOT="$HOME/libs/android-x86-build/toolchain-ndk16-x86/sysroot"
export ANDROID_TOOLCHAIN="$HOME/libs/android-x86-build/toolchain-ndk16-x86/bin"
#export FIPS_SIG=/project/androidGMSSL/openssl-1.1.0d/util/incore                                                              
export CROSS_COMPILE=i686-linux-android-
export ANDROID_DEV="$HOME/libs/android-x86-build/toolchain-ndk16-x86/sysroot/usr"

export PATH=$ANDROID_TOOLCHAIN:$PATH

VERBOSE=1
if [ ! -z "$VERBOSE" ] && [ "$VERBOSE" != "0" ]; then
  echo "ANDROID_NDK_ROOT: $ANDROID_NDK_ROOT"
  echo "ANDROID_ARCH: $_ANDROID_ARCH"
  echo "ANDROID_EABI: $_ANDROID_EABI"
  echo "ANDROID_API: $ANDROID_API"
  echo "ANDROID_SYSROOT: $ANDROID_SYSROOT"
  echo "ANDROID_TOOLCHAIN: $ANDROID_TOOLCHAIN"
  echo "FIPS_SIG: $FIPS_SIG"
  echo "CROSS_COMPILE: $CROSS_COMPILE"
  echo "ANDROID_DEV: $ANDROID_DEV"
fi

export CFLAGS="-D__ANDROID_API__=16"
export CC="$ANDROID_TOOLCHAIN/i686-linux-android-gcc"
export LD="$ANDROID_TOOLCHAIN/i686-linux-androideabi-ld"

cd curl-7.59.0
make clean
./configure --host=i686-linux-android --disable-shared --without-zlib --with-ssl=$HOME/libs/android-x86-build/out_ndk16_x86 --prefix=$HOME/libs/android-x86-build/out_ndk16_x86
read -p "continue?"
make depend
make all 
make install

注意:因为configure不支持-D参数,所以必须定义“CFLAGS”,否则会出很多错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值