2013-07-23 4 views
1

Je suis en train de construire sqlite en utilisant l'android NDK pour utiliser une fonction sqlite3_create_function mais je ne reçois aucune règle pour faire erreur cible. make: *** No rule to make target '/fts3-rank.c', needed by '.../obj/local/armeabi/objs/fts3-rank//fts3-rank.o'. Stop. Ce fichier Android.mk est basé sur de l'un sur ce site: http://www.roman10.net/how-to-compile-sqlite-for-android-using-ndk/Aucune règle pour faire erreur cible android ndk construire sqlite

#LOCAL_PATH is used to locate source files in the development tree. 

    #the macro my-dir provided by the build system, indicates the path of the current directory 

    LOCAL_PATH := $(call my_dir) 




    ##################################################################### 

    #   build sqlite3           # 

    ##################################################################### 

    include $(CLEAR_VARS) 

    LOCAL_C_INCLUDES := $(LOCAL_PATH)/sqlite-amalgamation-3071700 

    LOCAL_MODULE := sqlite3 

    LOCAL_SRC_FILES := $(LOCAL_PATH)/sqlite-amalgamation-3071700/sqlite3.c 

    include $(BUILD_STATIC_LIBRARY) 

    #include $(BUILD_SHARED_LIBRARY) 





    ##################################################################### 

    #   build our code     # 

    ##################################################################### 

    include $(CLEAR_VARS) 

    LOCAL_C_INCLUDES := $(LOCAL_PATH)/sqlite-amalgamation-3071700 

    LOCAL_MODULE := fts3-rank 

    LOCAL_SRC_FILES := fts3-rank.c 

    LOCAL_STATIC_LIBRARIES := libsqlite3 

    #LOCAL_SHARED_LIBRARIES:=libsqlite3 

    LOCAL_LDLIBS := -llog -lm 

    #include $(BUILD_SHARED_LIBRARY) 

    include $(BUILD_EXECUTABLE) 
+0

Ceci est probablement causé par une combinaison d'un modèle correspondant à faire la règle et la présence d'une double barre oblique ('... // fts3- rang.o'); alternativement, '/ fts3-rank.c' peut manquer un préfixe (quelque chose comme' $ (SRC)/fts3-rank.c' deviendra '/ fts3-rank.c' si' SRC' n'est pas défini). – technomage

+0

Je reçois juste 'make: *** Aucune règle pour faire la cible '/fts3-rank.c', nécessaire pour 'obj/local/armeabi/objs/fts3-rank/fts3-rank.o'. Arrêtez maintenant et ne pouvez toujours pas le comprendre ... J'ai essayé d'ajouter $ (LOCAL_PATH) et d'ajouter fts3-rank.c à sqlite amalgamation et toujours rien. – John61590

+0

Exécutez «make» avec «-d», puis recherchez les lignes contenant «'/fts3-rank.c ». Lorsque vous trouvez la règle, regardez les lignes de sortie précédentes pour déterminer où la règle est définie; puis regardez dans ce makefile pour voir la règle d'origine qui devrait rendre évidente quelle macro manque une définition. – technomage

Répondre

1

peut y être une autre raison de cette erreur.

  1. Il peut être LOCAL_PATH valeur incorrecte afin de vérifier l'initialisation de local_path. Supprimer les espaces supplémentaires dans cela. LOCAL_PATH := $(call my-dir)__

  2. Votre bibliothèque JNI doit être chargé en mémoire avant d'appeler une fonction JNI. Chargez la bibliothèque jni comme suit.

    statique {

    System.loadLibrary("libmy-jni-module"); 
    

    }

Vous pouvez consulter this discussion si

+0

J'ai essayé le System.loadLibrary et il ne l'a pas réparé. Voici comment j'ai configuré mon système de fichiers: project/jni est l'endroit où tous mes fichiers sont (Android.mk, sqlite-amalgamation folder, et fts3-rank.c). Je suis essayé en cours d'exécution à partir du dossier du projet et jni mais pas aller. Je n'ai pas d'espace supplémentaire après LOCAL_PATH non plus. – John61590

1

Je l'ai fixé en quelque sorte par essai et erreur. C'était très étrange. Je suppose que c'est parce que j'utilisais LOCAL_PATH deux fois?

Je l'ai finalement obtenu à construire en utilisant ce Android.mk

#LOCAL_PATH is used to locate source files in the development tree. 

#the macro my-dir provided by the build system, indicates the path of the current directory 

LOCAL_PATH := $(call my-dir) 




##################################################################### 

#   build sqlite3           # 

##################################################################### 

include $(CLEAR_VARS) 

LOCAL_C_INCLUDES := sqlite-amalgamation-3071700 

LOCAL_MODULE := sqlite3 

LOCAL_SRC_FILES := sqlite-amalgamation-3071700/sqlite3.c 

include $(BUILD_STATIC_LIBRARY) 

#include $(BUILD_SHARED_LIBRARY) 





##################################################################### 

#   build our code     # 

##################################################################### 

include $(CLEAR_VARS) 

LOCAL_C_INCLUDES := $(LOCAL_PATH)/sqlite-amalgamation-3071700 

LOCAL_MODULE := fts3-rank 

LOCAL_SRC_FILES := fts3-rank.c 

LOCAL_STATIC_LIBRARIES := libsqlite3 

#LOCAL_SHARED_LIBRARIES:=libsqlite3 

LOCAL_LDLIBS := -llog -lm 

include $(BUILD_SHARED_LIBRARY) 

#need main function to have executable 

#include $(BUILD_EXECUTABLE) 
Questions connexes