【问题标题】:Building Android openssl using NDK doesn't make arm4 assembly files properly使用 NDK 构建 Android openssl 无法正确生成 arm4 汇编文件
【发布时间】:2011-06-23 21:55:24
【问题描述】:

openssl 是included in the Android operating system,Google 还在其构建中包含了一些 arm4/thumb 汇编代码(aes/asm/aes-armv4.s、bn/asm/armv4-mont.s、sha/asm/sha1-armv4 -large.s、sha/asm/sha256-armv4.s、sha/asm/sha512-armv4.s)。我有the Android openssl buildingndk-build,但它只能用普通的C aes_core.c 正确构建,而不是arm4 文件。它甚至会创建 .o 文件,但找不到 *.o.d.org 文件,我不知道它们来自哪里。

对此有什么想法吗?

/usr/local/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-gcc -MMD -MP -MF /Users/hans/code/eighthave/openssl-android/obj/local/armeabi/objs/crypto/aes/asm/aes-armv4.o.d.org -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -I/Users/hans/code/eighthave/openssl-android -I/Users/hans/code/eighthave/openssl-android/crypto/asn1 -I/Users/hans/code/eighthave/openssl-android/crypto/evp -I/Users/hans/code/eighthave/openssl-android/include -I/Users/hans/code/eighthave/openssl-android/include/openssl -Iexternal/zlib -I/Users/hans/code/eighthave/openssl-android/crypto -DANDROID -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_CAST -DOPENSSL_NO_CMS -DOPENSSL_NO_GMP -DOPENSSL_NO_IDEA -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_SHA0 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED -DOPENSSL_NO_STORE -DOPENSSL_NO_WHIRLPOOL -DOPENSSL_NO_HW -DOPENSSL_NO_ENGINE -DZLIB -DNO_WINDOWS_BRAINDEATH -DOPENSSL_BN_ASM_MONT -DAES_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -Wa,--noexecstack -O2 -DNDEBUG -g -I/usr/local/android-ndk/platforms/android-8/arch-arm/usr/include -c /Users/hans/code/eighthave/openssl-android/crypto/aes/asm/aes-armv4.s -o /Users/hans/code/eighthave/openssl-android/obj/local/armeabi/objs/crypto/aes/asm/aes-armv4.o && rm -f /Users/hans/code/eighthave/openssl-android/obj/local/armeabi/objs/crypto/aes/asm/aes-armv4.o.d && mv /Users/hans/code/eighthave/openssl-android/obj/local/armeabi/objs/crypto/aes/asm/aes-armv4.o.d.org /Users/hans/code/eighthave/openssl-android/obj/local/armeabi/objs/crypto/aes/asm/aes-armv4.o.d mv: cannot stat `/Users/hans/code/eighthave/openssl-android/obj/local/armeabi/objs/crypto/aes/asm/aes-armv4.o.d.org': No such file or directory make: * [/Users/hans/code/eighthave/openssl-android/obj/local/armeabi/objs/crypto/aes/asm/aes-armv4.o] Error 1

【问题讨论】:

    标签: android openssl assembly android-ndk


    【解决方案1】:

    我有完全相同的问题,我正在寻找解决方法。我改用这个版本:https://github.com/fries/android-external-openssl

    我正在使用 Android NDK r5b

    【讨论】:

    • 我实际上只是找到了一种让它工作的方法。阅读此内容:osdir.com/ml/android-ndk/2010-06/msg00602.html 我编辑了 crypto/Android.mk 以将大写的“S”而不是“s”放入 makefile 开头列出的 5 个“.s”文件中。我还将实际提到的文件从 .s 重命名为 .S,现在它可以正确编译了。
    • Bingo,这对我有用,我只是将 crypto/Android.mk 中的 .s 更改为 .S,然后它就成功了!
    • 根据gcc docs,a .s 是“汇编代码”,a .S 是“必须预处理的汇编代码”。也许做这项工作的原始 Android 开发人员是在 Windows 或 Mac OS X 机器上,它们没有区分大小写的文件系统......
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2011-02-26
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2012-08-05
    • 1970-01-01
    相关资源
    最近更新 更多