交叉编译openssl需要在linux下编译。先下载ndk安装,下载openssl源码。然后执行如下命令编译。

#ndk安装根目录

export ANDROID_NDK_ROOT=/mnt/e/ndk/android-ndk-r14b

#openssl代码根目录

OPENSSL_DIR=/mnt/e/openssl/openssl-3.0.1

cd $OPENSSL_DIR
rm -rf ./output
mkdir ./output

#设置编译的目标cpu类型,编译其他cpu类型的修改这两个参数

ARCH_NAME=android-arm
TOOL_CHAIN=arm-linux-androideabi-4.9

export PATH=$ANDROID_NDK_ROOT/toolchains/$TOOL_CHAIN/prebuilt/linux-x86_64/bin:$PATH
./Configure android-arm shared no-ssl2 no-ssl3 no-asm no-comp no-hw no-engine -D__ANDROID_API__=23 --openssldir=$OPENSSL_DIR/output --prefix=$OPENSSL_DIR/output

make -j8

编译报错解决:

1. 汇编指令.rodata不识别

crypto/ec/ecp_nistz256-armv4.S: Assembler messages:
crypto/ec/ecp_nistz256-armv4.S:9: Error: unknown pseudo-op: `.rodata'
make[1]: *** [Makefile:15166: crypto/ec/libcrypto-lib-ecp_nistz256-armv4.o] Error 1

解决办法:./Configure选项加上no-asm,表示不使用汇编

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐