如何使用NDK 17为64位Android构建OpenSSL 1.1.1

时间:2019-02-05 14:50:12

标签: android android-ndk openssl

无法为64位Android构建OpenSSL。这是我已采取的步骤:

  1. https://wiki.openssl.org/images/7/70/Setenv-android.sh下载了setenv_android.sh
  2. https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz下载了OpenSSL 1.1.1
  3. 解压缩tar文件
  4. 修改了setenv_android脚本,以便运行它会产生以下输出:

    ANDROID_NDK_ROOT: /Users/spartygw/android-ndk-r17
    ANDROID_ARCH: arch-arm64
    ANDROID_EABI: aarch64-linux-android-4.9
    ANDROID_API: android-22
    ANDROID_SYSROOT: /Users/spartygw/android-ndk-r17/platforms/android-22/arch-arm64
    ANDROID_TOOLCHAIN: /Users/spartygw/android-ndk-r17/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin
    FIPS_SIG: 
    CROSS_COMPILE: aarch64-linux-android-
    ANDROID_DEV: /Users/spartygw/android-ndk-r17/platforms/android-22/arch-arm64/usr
    
  5. 使用以下命令配置openssl:./Configure no-rc5 no-idea no-md2 no-cast linux-aarch64

  6. Ran make depend; make

输出:

In file included from crypto/aes/aesv8-armx.S:1:
crypto/arm_arch.h:55:6: error: "unsupported ARM architecture"
#    error "unsupported ARM architecture"
     ^
1 error generated.
make[1]: *** [crypto/aes/aesv8-armx.o] Error 1
make: *** [all] Error 2

这篇文章听起来像是我遇到了这个问题并停了下来。我向您保证,我已经花了一个完整的工作日来尝试各种事情,但都无济于事。我不想用我尝试过的垃圾乱扔问题(传递不同的ARM_ARCH值,尝试其他版本的openSSL,尝试不同的NDK)。

1 个答案:

答案 0 :(得分:4)

OpenSSL Wiki上的脚本和示例可能已经过时。特定的构建脚本不支持arm64。

幸运的是,GitHub来了,请尝试https://github.com/noloader/Android-PRNG/blob/master/setenv-android.sh