我正在尝试在 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 平板电脑上它无法正常工作。
谢谢,
最佳答案
我没有尝试使用 OpenSSL 1.1.0
,但我对 Qt 5.12.4
的 1.1.1c
做了同样的事情。
我用了 guide我发现可以为 32 位和 64 位的 android 编译它。
此外,32bit
基本上是 android-armeabi
,因此请将其用于架构类型。
您还可以找到更多信息和已编译的库 here .
我测试了使用链接指南编译的 32 位和 64 位库,我可以说它们可以正常工作。
同时确保使用较新的 NDK
,基于您使用的 r11c
的代码有点太旧了。对于 Qt 5.13.0
,您至少需要 19c
,因此使用相同的版本进行编译。
关于android - 为 Android ARMV7 编译 OpenSSL 1.1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57216046/