【问题标题】:Android NDK: No rule to make targetAndroid NDK:没有制定目标的规则
【发布时间】:2011-09-08 17:45:48
【问题描述】:

我正在尝试使用 NDK 构建一个简单的 Android 应用程序。 这是我的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 时,我得到:

make: * 没有制定目标的规则 '/native.c', needed by '/Users/ivan/Documents/workspace/TestNDK/obj/local/armeabi/objs/myNDK/native.o'。 停下来。

所以问题显然是 make 正在根目录中搜索源文件,如果我将 native.c 复制到我的根文件夹中,一切正常。

问题是:我应该在我的 Android.mk 中指定什么来将 LOCAL_PATH 设置为我的工作 jni 文件夹。

【问题讨论】:

  • 真的很有帮助,谢谢。

标签: android android-ndk


【解决方案1】:

好的,我已经解决了我的问题,原因很奇怪: 问题出在第一行

'LOCAL_PATH := $(call my-dir)____'

最后有几个空格(我用'_'代替了它们)。如果您删除它们,一切都会正常工作。

希望对其他人有所帮助。

【讨论】:

  • 是的,它确实帮助了某人!我的头发谢谢你(我正要开始沮丧地拉它)! :)
  • 好收获!将其报告为 Android 错误会很好,因为它仍然出现在 NDK 修订版 7 中。
  • 我真的很想知道这是怎么回事!非常感谢您的解决方案!
  • 不了解你,但我从一个教程中复制粘贴,其中显然包含一些偷偷摸摸的空白。很好的收获。
  • 很棒的收获。帮了我很多。谢谢
【解决方案2】:

在使用 android-ndk-r9 64 位的 Mac OS X 上,从 NDK 路径中删除空格。这为我修复了 No rule to make target 错误

不完全是 OP 的答案,但我想它可以避免其他人浪费时间。

【讨论】:

    【解决方案3】:

    如果Android.mk 文件中有任何语法错误,则不会出现产生目标错误的规则。

    我遇到了同样的问题。

    【讨论】:

      【解决方案4】:

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

      LOCAL_SRC_FILES := native.c
      

      LOCAL_MODULE    := native
      

      使用相同的名称。我不确定为什么这会导致错误,因为代码应该在 native.o、native.od 和 native 的不同位置生成。但是,显然确实如此。

      我在尝试将 hello.c 编译为 hello 时发现了这一点。一旦我将 hello.c 更改为 main.c,一切都正确编译了。

      【讨论】:

        【解决方案5】:

        当根目录名称出现拼写错误时,我遇到了这个问题。

        示例: 我的路径应该是:

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

        但是如图所示有拼写错误

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

        一旦我纠正了拼写错误,它就可以正常工作了。

        【讨论】:

          【解决方案6】:

          确保 LOCAL_PATH 位于 Android.mk 的顶部,否则由于 GNU 编译器语法,它将无法工作

          Android.mk

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

          如果需要 ndk-major-at-least 缩短路径或函数定义,也可以在此之前有 ifeq/endif

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-06-02
            • 2014-03-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-03-02
            • 1970-01-01
            相关资源
            最近更新 更多