Android NDK: No hay regla para hacer objetivo


Estoy tratando de construir una aplicación Android simple usando 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 regla para hacer objetivo '/native.c', needed by '/Users/ivan/Documents/workspace/TestNDK/obj/local/armeabi/objs/myNDK/native.o'. Dejar.

Así que el problema es obviamente que make está buscando los archivos fuente en el directorio raíz y si copio nativo.c a mi carpeta raíz todo funciona perfectamente.

La pregunta es: ¿qué debo especificar en mi Android.mk para establecer el LOCAL_PATH en mi carpeta jni de trabajo.

Author: Paco Abato, 2011-06-05

4 answers

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 eso ayude a alguien más.

 86
Author: Paco Abato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-19 12:53:06

En Mac OS X con android-ndk-r9 de 64 bits, elimine los espacios en blanco de la ruta NDK. Eso solucionó el Ninguna regla para hacer que target error para mí

No es exactamente una respuesta para OP, pero supongo que puede salvar a otros de perder su tiempo.

 1
Author: Maragues,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-19 15:56:10

Otro problema que encontré que causa este error es que la

LOCAL_SRC_FILES := native.c

Y

LOCAL_MODULE    := native

Use el mismo nombre. No estoy seguro de por qué esto causa un error, ya que el código debe generarse en diferentes ubicaciones como nativo.o, nativo.sobredosis, y nativo. Pero, aparentemente sí.

Descubrí esto mientras intentaba compilar hello.c a hola. Una vez cambié hola.c a principal.c, todo compilado correctamente.

 1
Author: E Net Arch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-18 08:11:18

Si hay algún error de sintaxis en Android.mk archivo, ninguna regla para hacer que el error de destino estará allí.

Yo tenía el mismo problema.

 0
Author: charlotte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-13 04:38:41