android 安卓NDK:没有规则可作为目标

rsaldnfx  于 2022-12-25  发布在  Android
关注(0)|答案(6)|浏览(214)

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.

jhiyze9q

jhiyze9q1#

好吧,我的问题解决了,原因很奇怪:问题出在第一线
'本地路径:= $(调用我的目录)___'
最后有几个空格(我用“
”代替了它们)。如果你把它们去掉,一切都会好的。

jm81lzqq

jm81lzqq2#

在使用android-ndk-r9 64位的Mac OS X上,删除NDK路径中白色。这为我修复了 No rule to make target 错误
不完全是OP的答案,但我猜它可以让别人免于浪费时间。

snvhrwxg

snvhrwxg3#

我发现导致此错误的另一个问题是

LOCAL_SRC_FILES := native.c

以及

LOCAL_MODULE    := native

使用相同的名称。我不知道为什么这会导致错误,因为代码应该在不同的位置生成,如native.o、native.od和native。但是,显然它确实如此。
我在尝试将hello.c编译为hello时发现了这一点。一旦我将hello.c更改为main.c,所有内容都编译正确。

bq8i3lrv

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

LOCAL_PATH := $(call my-dir)  
include $(CLEAR_VARS)

如果需要ndk-major-at-shorten路径或函数定义,也可以在此之前使用ifeq/endif

cbjzeqam

cbjzeqam5#

If there are any syntax error in Android.mk file, no rule to make target error will be there.
我也有同样的问题。

q9rjltbz

q9rjltbz6#

当根目录名称中有拼写错误时,我就面临过这个问题。
示例:我的道路应该是:

include $(phone-root-dir)/test/test.mk

但有拼写错误,如图所示

include $(lphone-root-dir)/test/test.mk

一旦我纠正了拼写错误,它就工作得很好。

相关问题