【问题标题】:ndk-build can't find files under jni directoryndk-build 找不到 jni 目录下的文件
【发布时间】:2012-09-22 19:44:51
【问题描述】:

我有一个非常简单的测试项目。基本上是 jni 下的一个原生 c 文件(jni 是 在项目的根目录下,在与“src”“res”等相同的目录中)。品牌 文件基本上是最简单的:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := native
LOCAL_SRC_FILES := native.c
include $(BUILD_SHARED_LIBRARY)

错误信息是:make: * 没有规则来制作目标`'/native.c'。需要... 显然 ndk-build 试图在根目录下查找文件。如果我复制文件 到根 '/' 或者如果我在 make 文件中指定了 'native.c' 的完整路径, 那么一切都好。

我也试过通过$(warning, '$(LOCAL_PATH)') 输出$LOCAL_PATH,没有发现问题。

【问题讨论】:

  • 项目根目录的完整路径是什么?

标签: android android-ndk makefile


【解决方案1】:

使用以下内容创建 Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := native
LOCAL_SRC_FILES := native.c
include $(BUILD_SHARED_LIBRARY)

native.c 放在您的Android.mk 所在的同一文件夹中。

运行ndk-build

你会得到如下输出:

D:\12314\jni>ndk-build
"Compile thumb : native <= native.c
SharedLibrary  : libnative.so
Install        : libnative.so => libs/armeabi/libnative.so

【讨论】:

  • 同理,如果我不指定完整路径或将副本放在根目录下,仍然找不到native.c。
  • 我原来的Android.mk是这样的。它在 jni 目录下。但它找不到 native.c (也在 jni 下)。所以这很奇怪。我将 Application.mk 添加到 jni。我在项目根目录(如您的示例中的目录 12314)和 jni 下尝试了 ndk-build,同样的错误消息。
  • 我的示例即使没有 Application.mk 也可以工作。我使用 Android NDK r8b。
  • 它应该可以在没有 Application.mk 的情况下工作。真的很奇怪,我重新安装ndk-build,看看会发生什么。
  • 重新安装了android-ndk,还是不行。真的很奇怪。不知道为什么它不会搜索 LOCAL_PATH 目录。
猜你喜欢
  • 2015-12-15
  • 2018-05-16
  • 1970-01-01
  • 2013-09-28
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
相关资源
最近更新 更多