Android ndk Android NDK使用Cygwin时出错:错误:GNUMAKE变量定义为无效名称

Android ndk Android NDK使用Cygwin时出错:错误:GNUMAKE变量定义为无效名称,android-ndk,Android Ndk,我正在尝试使用AndroidNDK构建一个静态库。为此,我安装了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并将其指

我正在尝试使用AndroidNDK构建一个静态库。为此,我安装了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变量以指向它

我浏览了几篇博客,并遵循了其中的解决方案:

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

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

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

    但每次我都犯了同样的错误:

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

  • 所以看起来我没有正确地指向路径。 有人能告诉我GNUMAKE应该指向哪个路径吗

    我在Cygwin提示符中也使用了-v,并弹出以下消息(这使我相信与Cygwin安装相关的一切都很好):

    GNU Make 3.81

    版权所有(C)2006免费软件基金会。 这是自由软件;有关复制条件,请参见源。 没有担保;甚至不是为了适销性或是否适合 特殊目的

    这个程序是为Windows32构建的


    感谢您的帮助。

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

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

  • 这应该可以为您完成所有工作。

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

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

  • 这应该能帮到你。

    我努力解决gygwin terminal中的错误“gnumake变量被定义为无效名称”,然后我得出结论,只要删除系统和用户变量中的环境变量中的gnumake path(如果你创建了它),我们就可以删除这个错误


    mycomputer>system properties>advanced system Settings>environment variable

    我努力解决gygwin终端中的错误“gnumake variable被定义为无效名称”在这之后,如果您创建了GNUMAKE path环境变量,我们只需在系统和用户变量中删除GNUMAKE path,就可以删除这个错误


    mycomputer>系统属性>高级系统设置>环境变量

    感谢您的回复。我现在可以建图书馆了。我还要确认一件事:在您的回复中,您提到了本机代码。我相信这是用于java应用程序的。正当现在我只是想创建一个可执行文件,这样我就可以将它传输到我的Galaxy SII上,然后从那里运行它来执行文件I/O。我的Make File Right就是编译C源代码并将其构建成一个可执行文件。这听起来不错,还是我需要一个完整应用程序的java代码?当我们说Native时,我们指的是非java代码,或者更确切地说是不在虚拟机上运行的代码。您构建的只是库,所以您仍然需要一些东西来运行程序并与它们对话,所以是的,您要么需要Java,要么可以构建一个完全本机的活动。NDK附带了一个此类活动的示例。我使用$(BUILD_Executive)创建了一个NDK可执行文件,在我的手机(Samsung Galaxy S2)上运行此可执行文件而无需根,我将其推送到/data文件夹:adb push D:\NDK\test/data/local/tmp要验证,我通过cd转到data/local/tmp文件夹,然后我可以使用ls查看该文件。现在要运行可执行文件,我键入了./test,但我得到一个错误:“权限被拒绝”。我是NDK&Android新手,因此我不确定在创建可执行文件或在手机上使用它时是否遗漏了任何步骤。如果你有任何想法,请告诉我。谢谢你的回复。我现在可以建图书馆了。我还要确认一件事:在您的回复中,您提到了本机代码。我相信这是用于java应用程序的。正当现在我只是想创建一个可执行文件,这样我就可以将它传输到我的Galaxy SII上,然后从那里运行它来执行文件I/O。我的Make File Right就是编译C源代码并将其构建成一个可执行文件。这听起来不错,还是我需要一个完整应用程序的java代码?当我们说Native时,我们指的是非java代码,或者更确切地说是不在虚拟机上运行的代码。您构建的只是库,所以您仍然需要一些东西来运行程序并与它们对话,所以是的,您要么需要Java,要么可以构建一个完全本机的活动。NDK附带了一个此类活动的示例。我使用$(BUILD\u executable)创建了一个NDK可执行文件,以便在我的手机(三星Galaxy)上运行此可执行文件
    $ make -v