Android NDK一直在寻找“g / David / ......”

时间:2010-05-25 14:46:53

标签: android cygwin makefile android-ndk

我在Windows上安装了最新版本的Android NDK(r4),以及带有所需软件包,最新Android SDK,Eclipse + Android插件的全新cygwin安装。

每当我尝试从cygwin构建任何JNI代码时(无论是来自NDK的样本,还是custom project),我都会得到:

$ make APP=demo
Android NDK: Building for application 'demo'
Compile thumb  : demo_lib <= apps/demo/project/jni/demo.c
cc1: error: /cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/local/i
nclude: not a directory
cc1: error: /cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/include
: not a directory
make: *** [out/apps/demo/armeabi/objs/dmeo_lib/demo.o] Error 1

我的名字不是大卫,我也没有G驱动器。

似乎此路径以某种方式硬编码到此版本中。我试图在NDK目录中查找字符串g/David。它出现在许多二进制文件中,一些.info个文件,在某些标题中以及两个mkheaders.conf文件中的注释:

<NDK>\build\prebuilt\windows\arm-eabi-4.2.1\lib\gcc\arm-eabi\4.2.1\install-tools\mkheaders.conf:

SYSTEM_HEADER_DIR="/cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/include"

<NDK>\build\prebuilt\windows\arm-eabi-4.4.0\lib\gcc\arm-eabi\4.4.0\install-tools\mkheaders.conf:

SYSTEM_HEADER_DIR="/cygdrive/g/David/ndk/build/platforms/android-3/arch-arm${sysroot_headers_suffix}/usr/include"

我将两个文件都更改为指向正确的路径,但是我得到完全相同的错误(使用原始路径)。

我对cygwin,unix或make的经验有限。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

这可能是NDK安装不完整/损坏的症状。

gcc二进制文件总是在其可执行文件中对原始sysroot目录进行硬编码,但如果另外提供了适当的系统头文件和库,则通常不会找到这些文件。他们应该。

您是否可以尝试从官方网站重新下载并重新解压缩NDK软件包,看看是否可以解决问题?

答案 1 :(得分:0)

我遇到了同样的问题。 这是因为你可能有一个用于DVDRom或HDD的G:驱动器(对我而言G:是DVDROM)。当我取消激活G:驱动器时问题解决了....

答案 2 :(得分:0)

我在Windows XP中也有一个(非活动的)G:驱动器(为它分配了一些USB驱动器)。这可以防止使用NDK r4的某些构建,我无法理解为什么有时会弹出错误。

无论如何,这是解决方法:

  1. 准备替代的cygdrive路径:mkdir c:\cygwin\ccc

  2. 使用cygwin的mount -c ccc更改cygdrive路径前缀

  3. 创建缺少的目录:

  4. mkdir -f /cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/local/include

    mkdir -p /cygdrive/g/David/ndk/build/platforms/android-3/arch-arm/usr/include

    现在,您可以运行android-ndk-r4\ndk-build