如何设置GNUMAKE变量以使ndk-build工作

8
我正在尝试在Windows上的Cygwin中使ndk-build正常工作。根据NDK文档(特别是INSTALL.htm),“NDK需要在开发环境中可用GNU Make 3.81或更高版本。”我已经在计算机上安装了GNU Make。目前为止,一切都很好。
在Cygwin bash中,我转到android NDK根目录。现在,当我键入以下命令(现在还没有参数,只是为了查看命令是否有效): $./ndk-build
就会出现以下错误信息: ERROR: Cannot find 'make' program. Please install Cygwin make package or define the GNUMAKE variable to point to it.
因此,我尝试设置GNUMAKE变量,但没有运气: $export GNUMAKE='/cygdrive/c\Program Files\GnuWin32\bin' ERROR: Your GNUMAKE variable is defined to an invalid name: /cygdrive/c\Program Files\GnuWin32\bin Please fix it to point to a valid make executable (e.g. usr/bin/make)
即使按照建议将其设置为usr/bin/make,也会出现无效名称错误。有人知道如何解决这个问题吗? 我正在使用Windows 7,NDK r5,Cygwin 1.7.1。
8个回答

7

当我将ndk放在一个带空格的文件夹中时(最初我将其放在程序文件目录中),我遇到了GNUMake的问题。我将所有东西移动到C:/android/android-ndk和C:/android/android-sdk,并更新了我的路径设置以包括这些目录。


Android工具有时会在路径名中存在空格时出现问题。+1 - srf

1
这是一个通用错误。它意味着make命令出了问题,但错误信息本身被隐藏了。为了帮助诊断问题,在ndk目录下打开您的ndk_build脚本,并更改这些行:
ABS_GNUMAKE=`which $GNUMAKE 2> /dev/null`
...
GNUMAKE=`which make 2> /dev/null`

转换为这些:

ABS_GNUMAKE=`which $GNUMAKE`
...
GNUMAKE=`which make`

然后您将获得更详细的错误消息。请注意,问题可能不仅仅是“make”命令的问题,也可能是“which”命令的问题。确保您已安装Cygwin。


1

删除环境变量GNUMAKE 关闭Cygwin终端 重新打开Cygwin终端...进入要构建的路径...现在进行构建... 我相信您会像我一样成功构建。


1

问题不在于make,而是在安装cygwin时。 在ndk-demo脚本中,make路径通常是使用which命令找到的,而cygwin中缺少该命令的安装。

解决方案: 重新启动cygwin安装程序,选择utils(安装)

检查: $ which make 应该在cygwin提示符下给出make命令的路径。

祝好, Vasu


0
将NDK移动到没有空格的目录中的答案肯定是正确的。之后,您可能能够从Cygwin shell运行ndk-build。
但是,从Windows命令行(例如“bash ndk-build”)运行ndk-build可能会导致相同的奇怪错误,即“不正确的GNU make”。
这在NDK 6b中也是可重现的。
我希望它已经在最新版本的NDK中得到了修复...

0
错误:找不到“make”程序。请安装Cygwin make包或定义GNUMAKE变量指向它。
在尝试安装Cygwin时,我忘记安装MAKE PACKAGE。
只需要在搜索框中搜索make,它将显示包括devel分支的分支,然后从devel分支中选择make包。
问题解决了。

0

这里的问题是GNUMAKE变量的名称。给定的名称是

/cygdrive/c\Program Files\GnuWin32\bin将其更改为/cygdrive/c/Program Files/GnuWin32/bin/make

只使用正斜杠。有时文件夹结构中的空格不被识别。

愉快的编码!


0
我在gygwin终端上努力解决“gnumake变量定义为无效名称”的错误,最终发现我们可以通过删除环境变量中的GNUMAKE路径(包括系统和用户变量)来简单地解决此问题。如果您创建了该变量,请尝试这种方法,希望能有所帮助...
我的电脑 > 系统属性 > 高级系统设置 > 环境变量

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接