为 Android ARMV7 编译 OpenSSL 1.1.0

7

我正在尝试在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。我期望有一个名为 android-armv7 的目标,就像我在 openssl-1.0.2l 目录中输入相同命令时一样。

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

即使使用 NDK r18b 或 android-28,也无法解决问题,甚至使用 arch-arm64 代替 arch-arm 也不行。

背景:现在我正在使用的框架(Qt 5.13)需要 OpenSSL 1.1.0,并且它可以在某些手机上运行,例如 HTC 10(armv8 64-bit),但在 LG K7(armv7 32-bit)和 Amazon Fire 平板电脑上无法运行。

谢谢。

1个回答

1

我没有尝试过使用OpenSSL 1.1.0,但我已经使用1.1.1cQt 5.12.4做了同样的事情。

我使用了一个指南来为Android编译它,32位和64位都有。

32位基本上就是android-armeabi,所以在架构类型中使用它。

你也可以在这里找到更多信息和已经编译好的库。

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

还要确保使用更新的NDK,根据你使用的代码,r11c有点太旧了。对于Qt 5.13.0,你需要至少19c,所以使用相同的东西来编译。


感谢您的回复。我尝试使用适用于Android-ARMV7的android-armeabi构建,但在像LG K7这样的某些智能手机上仍然无法加载。 - aqm
"1.1.x 只能与 5.12.4 和 5.13.0 一起使用。请注意,在 Android 5(API 21)上,这些库的名称与系统 SSL 库冲突,后者使用 OpenSSL 1.0,这意味着您的 Qt 应用程序将无法使用 OpenSSL 1.1,因为系统已经加载了这些库。" 如此提到 此处 - Megued

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接