2013-07-23 2 views
1

Я пытаюсь построить sqlite с помощью андроида NDK, чтобы использовать sqlite3_create_function, но я не получаю No rule, чтобы сделать ошибку цели. make: *** No rule to make target '/fts3-rank.c', needed by '.../obj/local/armeabi/objs/fts3-rank//fts3-rank.o'. Stop. Этот файл Android.mk базируется на одном на этом сайте: http://www.roman10.net/how-to-compile-sqlite-for-android-using-ndk/Нет правила делать ошибку цели android ndk build 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

Это, вероятно, вызвано сочетанием соответствия шаблона сделать правила и наличием двойного косого черты ('... // fts3- rank.o'); альтернативно, '/ fts3-rank.c' может отсутствовать префикс (что-то вроде' $ (SRC)/fts3-rank.c' превратится в '/ fts3-rank.c', если' SRC' не определен). – technomage

+0

Я просто получаю 'make: *** No rule to make target '/fts3-rank.c', необходимый для 'obj/local/armeabi/objs/fts3-rank/fts3-rank.o'. Stop.' сейчас и все еще не могу понять это ... Я попытался добавить $ (LOCAL_PATH) и добавить fts3-rank.c к объединению sqlite и все равно ничего. – John61590

+0

Запустите 'make' 'с' '-d' ', затем найдите строки, содержащие' '/ fts3-rank.c''. Когда вы найдете правило, посмотрите на предыдущие строки вывода, чтобы определить, где определено правило; затем посмотрите в этом make-файле, чтобы увидеть исходное правило, которое должно сделать очевидным, что макрос не имеет определения. – technomage

ответ

1

Может быть Там несколько разных причин этой ошибки.

  1. Это может быть LOCAL_PATH значение неправильно поэтому проверьте инициализацию local_path. Удалите лишние пробелы. LOCAL_PATH := $(call my-dir)__

  2. Ваша jni-библиотека должна быть загружена в память перед вызовом любой jni-функции. Загрузите jni-библиотеку, как показано ниже.

    статический {

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

    }

Вы можете обратиться this обсуждение так

+0

Я попробовал System.loadLibrary, и это не исправило. Вот как я настроил свою файловую систему: project/jni - это где все мои файлы (Android.mk, sqlite-amalgamation folder и fts3-rank.c). Я пробовал работать из папки проекта и jni, но не пошел. После LOCAL_PATH у меня нет лишних пробелов. – John61590

1

Я установил его как-то методом проб и ошибок. Это было очень странно. Думаю, это потому, что я дважды использовал LOCAL_PATH?

я, наконец, получил его построить, используя этот 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) 
Смежные вопросы