【发布时间】:2013-07-23 13:07:34
【问题描述】:
我正在尝试使用 android NDK 构建 sqlite 以使用 sqlite3_create_function,但我得到 No rule to make target 错误。 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/
#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)
【问题讨论】:
-
这可能是由模式匹配 make 规则和双斜杠 (
...//fts3-rank.o) 的组合引起的;或者,/fts3-rank.c可能缺少前缀(如果未定义SRC,则$(SRC)/fts3-rank.c之类的东西将变成/fts3-rank.c)。 -
我现在才收到
make: *** No rule to make target '/fts3-rank.c', needed by 'obj/local/armeabi/objs/fts3-rank/fts3-rank.o'. Stop.,但仍然无法弄清楚...我尝试添加 $(LOCAL_PATH) 并将 fts3-rank.c 添加到 sqlite 合并中,但仍然没有. -
运行 '
make' 和 '-d',然后查找包含 '/fts3-rank.c' 的行。找到规则后,查看前面的输出行以确定规则的定义位置;然后查看该 makefile 以查看原始规则,该规则应该清楚地表明缺少定义的宏。
标签: android sqlite android-ndk java-native-interface