首页 > 解决方案 > 为 Android ARMV7 编译 OpenSSL 1.1.0

问题描述

我正在尝试在 Ubuntu 机器上为 Android ARMV7 编译 OpenSSL 1.1.0(k)。但我只能针对目标 android、android-armabi、android64(-aarch64) 进行编译。

我正在尝试什么(在 openssl-1.1.0k 文件夹中):

export AR=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc-ar
export CC=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
export LD=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld
export RANLIB=~/android-ndk-r11c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc-ranlib
export ANDROIDNDKVER=r11c
export ANDROIDAPI=24
export CROSS_SYSROOT=~/android-ndk-r11c/platforms/android-24/arch-arm64
export ANDROID_DEV=~/android-ndk-r11c/platforms/android-24/arch-arm64/usr/
export SYSROOT=~/android-ndk-r11c/platforms/android-24/arch-arm64/usr/
export PATH=$PATH:~/android-ndk-r11c/platforms/android-24/arch-arm64/usr/

现在,当我列出目标时

./Configure LIST

没有提到armv7。当我在 openssl-1.0.2l 目录中输入相同的命令时,我希望有一个名为 android-armv7 的目标。

我错过了什么?或者如何在 armv7 Android 手机的兼容版本中编译 Openssl-1.1.0?

同样使用 NDK r18b 或 android-28 并没有成功,甚至使用 arch-arm 代替 arch-arm64。

背景:我现在使用的框架(Qt 5.13)需要 OpenSSL 1.1.0,它适用于某些手机。与 HTC 10(armv8 64 位)一样,但在 LG K7(armv7 32 位)和 Amazon Fire 平板电脑上却无法正常工作。

谢谢,

标签: androidqtubuntuopensslarmv7

解决方案


我没有尝试过,但我对forOpenSSL 1.1.0做了同样的事情。我使用找到的指南为 32 位和 64 位的 android 编译它。1.1.1cQt 5.12.4

此外,32bit基本上就是android-armeabi这样用于架构类型。您还可以在此处找到更多信息和已编译的库。

我测试了使用链接指南编译的 32 位和 64 位库,我可以说它们正在工作。

还要确保使用 newer NDK,基于您使用的代码r11c有点太旧了。因为Qt 5.13.0你至少需要19c,所以使用相同的编译。


推荐阅读