studio - NDK de Android: ninguna regla para hacer objetivo
ndk build (4)
Estoy tratando de construir una aplicación de Android simple utilizando NDK. Aquí están los contenidos de mi Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE := myNDK
LOCAL_SRC_FILES := native.c
include $(BUILD_SHARED_LIBRARY)
Y cuando estoy ejecutando ndk-build obtengo:
make: * No hay una regla para hacer objetivo
''/native.c'', needed by
''/Users/ivan/Documents/workspace/TestNDK/obj/local/armeabi/objs/myNDK/native.o''. Detener.
Entonces, obviamente, el problema es que make está buscando los archivos de origen en el directorio raíz y si copio native.c en mi carpeta raíz, todo funciona perfectamente.
La pregunta es: ¿qué debo especificar en mi Android.mk para establecer LOCAL_PATH en mi carpeta jni de trabajo?
En Mac OS X con android-ndk-r9 64 bit, elimine los espacios en blanco de la ruta NDK. Eso arregló la regla No para hacer un error de destino
No es exactamente una respuesta para OP, pero creo que puede evitar que otros pierdan su tiempo.
OK, he resuelto mi problema, y la razón era muy extraña: el problema está en la primera línea
''LOCAL_PATH: = $ (call my-dir) ____''
Tenía varios espacios al final (los he reemplazado con ''_''). Si los quitas todo funciona bien.
Espero que ayude a alguien más.
Otro problema que encontré que causa este error es que el
LOCAL_SRC_FILES := native.c
y
LOCAL_MODULE := native
usa el mismo nombre No estoy seguro de por qué esto causa un error, ya que el código debe generarse en diferentes ubicaciones como native.o, native.od y native. Pero, al parecer, lo hace.
Descubrí esto mientras intentaba compilar hello.c para hola. Una vez que cambié hello.c a main.c, todo se compiló correctamente.
Si hay algún error de sintaxis en el archivo Android.mk, no habrá ninguna regla para cometer el error de destino.
Yo tuve el mismo problema.