【问题标题】:Android NDK Error using Cygwin: ERROR: GNUMAKE variable is defined to an invalid name使用 Cygwin 的 Android NDK 错误:错误:GNUMAKE 变量定义为无效名称
【发布时间】:2011-12-26 20:06:47
【问题描述】:

我正在尝试使用 Android NDK 构建一个静态库。为此,我安装了 Cygwin 和 android-ndk-r7。

为了构建库,我已经创建了所需的源文件和 Android.mk 文件。这些文件位于我机器上的“D:\NDK\test”下。

我的 NDK 工具安装在“C:\Android\android-ndk-r7”下,Cygwin 文件位于“C:\Cygwin\http%3a%2f%2fcygwin.mirrors.hoobly.com%2f”下。因此,任何位置都没有空间。

为了构建库,我启动 Cygwin 并将其指向我的源文件和 Android.mk 文件所在的位置。然后给出构建命令,我输入“/cygdrive/c/Android/android-ndk-r7/ndk-build”。在给出上述命令时,我收到一条错误消息:

错误:找不到“make”程序。请安装 Cygwin make 包 或者定义 GNUMAKE 变量指向它。

我浏览了几个博客并遵循了它们的解决方案:

  1. 在 Cygwin 安装中的 Devel 文件夹下安装 make。这没有做任何改变。

  2. 创建一个环境变量 GNUMAKE 并将其定义为 /usr/bin/make。我还尝试将此变量定义到不同的位置:

    C:\Cygwin\http%3a%2f%2fcygwin.mirrors.hoobly.com%2f\bin
    C:\Android\android-ndk-r7\prebuilt\windows\bin
    C:\Android\android-ndk-r7

    但每次我都遇到同样的错误:

    错误:您的 GNUMAKE 变量定义为无效名称:C:\Android\android-ndk-r7 请修复它以指向有效的 make 可执行文件(例如 /usr/bin/make)

所以看起来我没有正确指向路径。 谁能告诉我 GNUMAKE 应该指向哪条路径。

我还在 Cygwin 提示符上做了 -v 并且弹出了以下消息(这让我相信与 Cygwin 安装相关的一切都很好):

$ make -v

GNU Make 3.81

版权 (C) 2006 Free Software Foundation, Inc. 这是免费软件;查看复制条件的来源。 没有保修;甚至不适合适销性或适合性 特殊目的。

这个程序是为 Windows32 构建的

感谢您的帮助。

【问题讨论】:

    标签: android-ndk


    【解决方案1】:

    从 NDKr7 开始,您不再需要 Cygwin 来构建库。这是更简单的方法。

    1. 在命令提示符下,导航到您的项目目录:cd D:\NDK\test
    2. 确保您的本机代码和 Android.mk 位于该目录的 jni 文件夹中
    3. 调用 ndk-build:C:\Android\android-ndk-r7\ndk-build

    这应该为你做这一切。

    【讨论】:

    • 感谢您的回复。我现在能够建立图书馆。我想再确认一件事:在您的回复中,您提到了本机代码。我相信这用于java应用程序。正确的?现在我只是想创建一个可执行文件,这样我就可以将它传输到我的 Galaxy SII 上,然后从那里运行它来执行文件 I/O。我的 Make File 权利只是编译 C 源代码并将其构建为可执行文件。听起来不错,还是我需要一个完整的应用程序的 Java 代码?
    • 当我们说 Native 时,我们指的是非 Java,或者更确切地说是不在虚拟机上运行的代码。你构建的只是库,所以你仍然需要一些东西来运行程序并与它们对话,所以是的,你要么需要 Java,要么可以构建一个完全原生的 Activity。此类 Activity 的示例随 NDK 提供。
    • 我使用 $(BUILD_EXECUTABLE) 创建了一个 NDK 可执行文件,为了在我的手机(Samsung Galaxy S2)上运行这个可执行文件,我将它推送到 /data 文件夹: adb push D:\NDK\test / data/local/tmp 为了验证,我通过 cd 进入 data/local/tmp 文件夹,然后我可以使用 ls 查看该文件。现在运行我输入的可执行文件 ./test 但我收到一个错误:“权限被拒绝”。我是 NDK 和 Android 的新手,因此我不确定我是否遗漏了创建可执行文件或在手机上使用它的任何步骤。如果您有任何想法,请告诉我。
    【解决方案2】:

    我努力解决 gygwin 终端中的错误 “gnumake 变量被定义为无效名称” 之后我明白了,我们只需删除环境变量中的 GNUMAKE 路径即可删除此错误如果你创建它,在系统和用户变量中......

    我的电脑>系统属性>高级系统设置>环境变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多