Сборка Android openssl с использованием NDK не создает файлы сборки arm4 должным образом

openssl включен в операционную систему Android, и 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). У меня есть сборка Android openssl с ndk-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


person Hans-Christoph Steiner    schedule 09.02.2011    source источник


Ответы (1)


У меня точно такая же проблема, ищу обходной путь. Вместо этого я использую эту версию: https://github.com/fries/android-external-openssl< /а>

Я использую Android NDK r5b

person awakecoding    schedule 10.02.2011
comment
Я на самом деле только что нашел способ заставить его работать. Читаю это: osdir.com/ml/android-ndk/2010-06 /msg00602.html Я отредактировал файл crypto/Android.mk, добавив заглавную букву «S» вместо «s» в 5 файлов с расширением «.s», перечисленных в начале make-файла. Я также переименовал упомянутые файлы с .s на .S, и теперь он компилируется правильно. - person awakecoding; 10.02.2011
comment
Бинго, это помогло мне, я просто изменил .s на .S в crypto/Android.mk, и он построился! - person Hans-Christoph Steiner; 10.02.2011
comment
Согласно документам gcc, файл . s — код на ассемблере, а .S — код на ассемблере, который необходимо предварительно обработать. Возможно, первоначальный разработчик Android, проделавший эту работу, работал на компьютере под управлением Windows или Mac OS X, в которых файловые системы не чувствительны к регистру... - person Hans-Christoph Steiner; 10.02.2011