I'm trying to build a simple Android application using NDK. Here are the contents of my 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)
当我运行ndk-build时,我得到:
创建:***没有规则来创建目标'/native.c', needed by
"/用户/ivan/文档/工作区/TestNDK/obj/local/armeabi/objs/myNDK/native. o "。停止。
所以问题很明显是make在根目录中搜索源文件,如果我把native.c复制到根文件夹中,一切都能正常工作。
The question is: what should I specify in my Android.mk to set the LOCAL_PATH to my working jni folder.
6条答案
按热度按时间jhiyze9q1#
好吧,我的问题解决了,原因很奇怪:问题出在第一线
'本地路径:= $(调用我的目录)___'
最后有几个空格(我用“”代替了它们)。如果你把它们去掉,一切都会好的。
jm81lzqq2#
在使用android-ndk-r9 64位的Mac OS X上,删除NDK路径中白色。这为我修复了 No rule to make target 错误
不完全是OP的答案,但我猜它可以让别人免于浪费时间。
snvhrwxg3#
我发现导致此错误的另一个问题是
以及
使用相同的名称。我不知道为什么这会导致错误,因为代码应该在不同的位置生成,如native.o、native.od和native。但是,显然它确实如此。
我在尝试将hello.c编译为hello时发现了这一点。一旦我将hello.c更改为main.c,所有内容都编译正确。
bq8i3lrv4#
Make sure LOCAL_PATH is at the top of the Android.mk else it won't work due to GNU Compiler syntax
Android.mk
如果需要ndk-major-at-shorten路径或函数定义,也可以在此之前使用ifeq/endif
cbjzeqam5#
If there are any syntax error in Android.mk file, no rule to make target error will be there.
我也有同样的问题。
q9rjltbz6#
当根目录名称中有拼写错误时,我就面临过这个问题。
示例:我的道路应该是:
但有拼写错误,如图所示
一旦我纠正了拼写错误,它就工作得很好。