2011-02-09 32 views
5

openssl là included in the Android operating system và Google cũng bao gồm một số mã lắp ráp arm4/thumb trong các bản dựng của chúng (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). Tôi có the Android openssl building với ndk-build nhưng nó sẽ chỉ xây dựng đúng với đồng bằng C aes_core.c, không phải tệp arm4. Nó thậm chí còn tạo ra các tệp .o, nhưng nó không thể tìm thấy tệp * .o.d.org, mà tôi không biết chúng xuất phát từ đâu.Xây dựng openssl Android bằng NDK không làm cho tệp lắp ráp arm4 đúng cách

Mọi ý tưởng về điều này?

/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

Trả lời

3

Tôi có vấn đề chính xác cùng, và tôi đang tìm một cách giải quyết khác. Tôi đang sử dụng phiên bản này để thay thế: https://github.com/fries/android-external-openssl

Tôi đang sử dụng r5b Android NDK

+4

Tôi thực sự chỉ tìm thấy một cách để làm cho nó hoạt động. Đọc này: http://osdir.com/ml/android-ndk/2010-06/msg00602.html Tôi đã chỉnh sửa mật mã/Android.mk để đặt chữ hoa 'S' thay vì 's' thành 5 '.s 'các tệp được liệt kê ở đầu tệp makefile. Tôi cũng đã đổi tên các tệp được đề cập thực tế từ .s thành .S và bây giờ nó đã biên dịch chính xác. – awakecoding

+0

Bingo, điều đó đã làm cho tôi, tôi chỉ thay đổi .s thành .S trong 'crypto/Android.mk', và nó được xây dựng! –

+1

Theo [tài liệu gcc] (http://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Overall-Options.html), a .s là "Mã trình cài ráp" và a .S là " Mã lắp ráp phải được xử lý trước ". Có lẽ nhà phát triển Android gốc đã thực hiện tác vụ này trên hộp Windows hoặc Mac OS X, không có hệ thống tệp phân biệt chữ hoa chữ thường ... –

Các vấn đề liên quan