Error durante la compilación de la muestra de jni de android: inválido -march = opción: `armv5te '
Cuando intento compilar algunas muestras del ndk del android siempre consigo este error:
$ cd ~/Dev/Android/ndk/samples/hello-jni $ ~/Dev/Android/ndk/ndk-build Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver Gdbsetup : libs/armeabi/gdb.setup Compile thumb : hello-jni <= hello-jni.c Assembler messages: Fatal error: invalid -march= option: `armv5te' make: *** [obj/local/armeabi/objs-debug/hello-jni/hello-jni.o] Error 1
¿Qué pasa conmigo o con mi sistema?
- Android cómo mantener la biblioteca nativa cuando la aplicación se detuvo
- ¿Se ha movido la ubicación de la biblioteca en Android 4.2.1?
- JNI se bloquea al llamar a CallVoidMethod
- Cómo obtener un algoritmo de Hashing de archivo rápido para archivos grandes en un dispositivo móvil
- Cómo agregar un servicio de sistema a Android Framework
- JNI_OnLoad devolvió la versión incorrecta (-1)
- Detección de fugas de memoria nativas en el código JNI de Android
- No se puede acceder a AAssetManager en código nativo pasado de Java en WallpaperService
- JNI - Llamando a Java desde C ++
- JNI: Llamar a GetStaticMethodID explotar
- Construyendo OpenSSL en Android NDK
- Uso de Fluidsynth para reproducir notas de SoundFonts en Android
- ¿Cómo puedo depurar eficazmente el código C que está envuelto con JNI en Eclipse? (Android Dev)
He encontrado una solución:
$ ln -s $NDK_PATH/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-as $NDK_PATH/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/libexec/gcc/arm-linux-androideabi/4.4.3/as
En primer lugar, ejecuté el constructor con opciones para que se muestre las comunicaciones en ejecución:
$ ndk-build -BV=1
De modo que descubrí cómo ejecuta el compilador y pasó el mismo comando a strace
strace arm-linux-androideabi-gcc -MMD -MP -MF ./obj/local/armeabi/objs-debug/hello-jni/hello-jni.od -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 -Ijni -DANDROID -Wa,--noexecstack -O0 -g -I/home/aleck/Dev/Android/ndk/platforms/android-8/arch-arm/usr/include -c jni/hello-jni.c -o ./obj/local/armeabi/objs-debug/hello-jni/hello-jni.o
Que revela que por alguna razón desconocida el brazo-linux-androideabi-gcc hace una búsqueda del programa del ensamblador por pensamiento el estándar pero en este caso el nombre inválido 'como' en vez de 'arm-linux-androideabi-como'
stat64("/home/aleck/Dev/Android/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../libexec/gcc/arm-linux-androideabi/4.4.3/as", 0xbfedea68) = -1 ENOENT (No such file or directory) stat64("/home/aleck/Dev/Android/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../libexec/gcc/as", 0xbfedea68) = -1 ENOENT (No such file or directory) stat64("/home/aleck/Dev/Android/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/arm-linux-androideabi/4.4.3/as", 0xbfedea68) = -1 ENOENT (No such file or directory) stat64("/home/aleck/Dev/Android/ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/as", 0xbfedea68) = -1 ENOENT (No such file or directory) vfork() = 6931 waitpid(6931, Assembler messages: Fatal error: invalid -march= option: `armv5te'
Así que hice un enlace suave llamado 'como' en el primer lugar donde se espera que sea.
- Error de Gradle después de añadir la biblioteca de diseño de soporte de Android
- Compruebe si el cronómetro está funcionando