2011-02-09 7 views
5

openssl es included in the Android operating system, y Google también incluye algunos arm4/thumb código ensamblador en sus compilaciones (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). Tengo the Android openssl building con ndk-build, pero solo se compilará correctamente con C aes_core.c sin formato, no con los archivos arm4. Incluso crea los archivos .o, pero no puede encontrar los archivos * .o.d.org, que no tengo ni idea de dónde vienen.Construir Android openssl utilizando NDK no hace archivos de ensamblaje arm4 correctamente

¿Alguna idea sobre esto?

/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

Respuesta

3

que tienen exactamente el mismo problema, y ​​yo estoy buscando una solución. Estoy utilizando esta versión en su lugar: https://github.com/fries/android-external-openssl

estoy usando el R5b Android NDK

+4

De hecho, me acabo de encontrar una manera de hacer que funcione. Leyendo esto: http://osdir.com/ml/android-ndk/2010-06/msg00602.html He editado crypto/Android.mk para poner mayúsculas 'S' en vez de 's' para las 5 '.s 'archivos enumerados al comienzo del archivo MAKE. También cambié el nombre de los archivos mencionados de .s a .S, y ahora se compila correctamente. – awakecoding

+0

Bingo, eso lo hizo por mí, acabo de cambiar .s por .S en el 'crypto/Android.mk', ¡y se construyó! –

+1

De acuerdo con [gcc docs] (http://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Overall-Options.html), a .s es "Código de ensamblador" y a .S es " Código ensamblador que debe preprocesarse ". Quizás el desarrollador original de Android que hizo este trabajo está en una caja de Windows o Mac OS X, que no tienen sistemas de archivos que distingan entre mayúsculas y minúsculas ... –