Windows 7 - 'make'不被识别为内部或外部命令、可操作程序或批处理文件。

71

我使用的是Windows 7系统,尝试使用"make"命令,但系统提示"make"不是内部或外部命令。

我输入了开始 -> cmd -> 运行 -> make,系统输出:

"make"不是内部或外部命令,也不是可运行的程序或批处理文件。

然后我尝试输入"mingw32-make"代替"make" (开始 -> cmd -> 运行 -> mingw32-make),但依然得到相同的错误提示:

"mingw32-make"不是内部或外部命令,也不是可运行的程序或批处理文件。

为了解决这个问题,我应该接下来怎么做?


我使用“npm install”命令,但输出中出现了以下错误:make未被识别。 - programmer
1
你知道 start >cmd >run >make 不是一个实际的可以执行的序列,对吧? - foxidrive
是的,我在Windows 7中不使用make,我尝试运行“npm install”命令安装特定的软件包时遇到了错误。然后我注意到系统根本没有识别“make”命令。 - programmer
你真的安装了 mingw32 吗? - Mike Kinghan
我在电脑上下载并安装了mingw-w64,但是当我执行start->cmd-> mingw32-make或mingw64-make时,命令无法识别,那我该怎么办? - programmer
显示剩余3条评论
12个回答

46

在Windows10中,我通过将C:\MinGW\bin添加到系统变量Path中,并使用MinGW32-make而非make来解决了这个问题。


1
我试图安装nio4r-2.2.0 gem,只需复制mingw32-make程序并将其重命名为make,然后成功安装了gem。 - Tom Hall
你在这里讲的是什么路径? - DikShU

37

你的问题很可能是shell不知道在哪里找到你的make程序。如果你想从“任何地方”使用它,那么你必须这样做,否则每次调用它时都需要添加完整路径,这相当麻烦。例如:

"c:\program files\gnuwin32\bin\make.exe" option1=thisvalue option2=thatvalue

这只是一个示例,它在XP上看起来像这样,我不确定在W7上的情况。但gnuwin32曾经为Windows提供有用的“Linux世界”软件包。查看您的提供商以获取更多详细信息。

因此,为了避免输入路径,您可以将路径添加到PATH环境变量中。您可以轻松找到如何添加路径的方法。 为确保操作系统已注册该路径,请打开控制台(运行cmd.exe),输入$ PATH应该会给您列出默认路径的列表。检查您的make程序所在的位置是否在其中。


31
我从以下链接中下载了“make-3.81.exe”:link。我执行了“make-3.81.exe”,然后在C:\Program Files (x86)\下创建了一个新文件夹“GnuWin32”。接着,在Windows 7中,我依次进行了以下步骤:开始 -> cmd -> cd C:\Program Files (x86)\GnuWin32\bin -> 输入make命令,并成功地执行了该命令。最后,我像你告诉我的那样编辑了PATH环境变量,问题得到了解决!现在,系统可以识别“make”命令。非常感谢你的帮助! - programmer
这里是Make的主页。(哎呀,看起来是一个很老的应用程序)。 - T.Todua
这个可以运行,只需要下载并运行它,并将 "C:\Program Files (x86)\GnuWin32\bin" 添加到您的环境变量中的 "PATH" 中,它就能完美地工作了。谢谢。 - SSB

37

这是一个老问题,但这里的所有答案都没有为初学者提供足够的背景知识来选择哪一个。

make 是什么?

make 是传统 Unix 实用程序,它读取 Makefile 文件,以确定运行哪些程序来达到特定目标。通常,该目标是从一组源文件和库构建软件; 但是,make 足够通用,也可以用于各种其他任务,比如从一组 TeX 源文件组装 PDF 或检索列表中每个网页的最新版本。

除了封装达到单个目标的步骤外,make 通过避免重新执行已经完成的步骤来减少处理时间。它通过比较依赖项之间的时间戳来实现这一点;如果 A 依赖于 B 但 A 已经存在且比 B 新,那么就不需要 make A。当然,为了使此功能正常工作,Makefile 需要记录所有这些依赖关系。

A: B
    commands to produce A from B

注意,缩进需要由实际的制表符组成。这是一个常见的初学者错误

make的常见版本

最初的make相当平凡。它的血统一直延续到今天的BSD make,而nmake就是从中派生出来的。粗略地说,这个版本提供了POSIX定义的make功能,带有一些小的增强和变化。

相比之下,GNU make显著扩展了形式主义,以至于GNU Makefile不太可能与其他版本(甚至是旧版本的GNU make)兼容。有一个惯例叫做将这样的文件称为GNUmakefile而不是Makefile,但这个惯例经常被忽视,特别是在像Linux这样的平台上,GNU make是事实上的标准make

使用GNU make惯例的Makefile的显著特征是使用:=而不是=进行变量赋值(尽管这不是专属于GNU的功能),以及大量的函数,如$(shell ...)$(foreach ...)$(patsubst ...)等。

那我需要哪一个?

这真的取决于你希望实现什么。

如果你希望构建的软件有一个vcproj文件或类似文件,那么你可能想使用它,而不是尝试使用make

通常情况下,MinGW make是GNU make在Windows上的移植版,它应该能够处理任何你提供的Makefile

如果你知道这个软件是用nmake编写的,并且你已经安装了它,或者很容易获取到它,那么也可以选择使用它。

你应该明白,如果这个软件没有为Windows编写或显式移植,那么它不太可能在不进行重大修改的情况下编译。在这种情况下,让make运行起来只是你问题中最小的一部分,你需要深入了解原始平台和Windows之间的区别,才有可能自己完成。

更详细地说,如果Makefile包含像grepcurlyacc这样的Unix命令,则你的系统也需要安装这些命令。但除此之外,为不同平台编写的C或C++(或更一般地说,任何语言的源代码)可能根本无法工作,在Windows上也可能出现意料之外的问题(这通常更糟糕)。


当然,使用vcproj选项需要您拥有Visual Studio或类似产品。如果您正在阅读这篇文章,显然您已经是微软公司的受害者,但也许您不想更深陷于这个特定的洞里。 - tripleee

14
  1. 首先确保已安装MinGW。
  2. 从MinGW安装管理器中检查是否已安装mingw32-make包。
  3. 检查是否已将MinGW bin文件夹添加到环境变量PATH中。在命令行中键入PATH并查找该文件夹,或在Windows 10上转到控制面板\系统和安全\系统 --> 高级系统设置 --> 环境变量 --> 系统变量找到Path变量,选择编辑并检查其是否存在。如果没有,请添加!
  4. 这里所述,在PATH文件夹中的任何一个位置创建一个新文件。例如,在MinGW bin文件夹中创建mingwstartup.bat文件。在文件中写入doskey make=mingw32-make.exe,保存并关闭。
  5. 通过运行regedit来打开注册表编辑器。如这里所述,在HKEY_LOCAL_MACHINEHKEY_CURRENT_USER中转到\Software\Microsoft\Command Processor,右键单击右侧面板新建 --> 可扩展字符串值并将其命名为AutoRun。双击并在值数据中输入.bat文件的路径(例如"C:\MinGW\bin\mingwstartup.bat"),结果应如下所示:

enter image description here

现在每次打开新终端时,make命令都将运行mingw32-make.exe。希望能帮到你。

提示:如果您不想在终端上看到.bat文件的命令输出,请在批处理文件顶部添加@echo off


1
是的,终于可以了。也许每次打开 cmd 都看到 doskey make=mingw32-make.exe 并不是很好,但实际上这是一个非常好的技巧。 - Piotr Wasilewicz
@PiotrWasilewicz,请查看 **P.S.**。 - Foad S. Farimani

14
如果您已经在Windows 7上安装了MinGW,则只需按照以下步骤操作:
  1. 在相同的文件夹中再次复制 C:\MinGW\bin\mingw32-make.exe 文件。
  2. 将文件名从 mingw32-make.exe 改为 make.exe
  3. 再次运行 make 命令。

以上步骤在我的笔记本电脑上经过测试可以正常工作。


或者先执行第二步,然后将其添加到路径(环境变量)中,再进行第三步。 - jeea

10

如何解决Windows 10中出现“make' is not recognized as an internal or external command”错误

  1. 从此处下载“MinGW- Minimalist GNU for Windows”:https://sourceforge.net/projects/mingw/

  2. 安装MinGW

  3. 在安装过程中,像图像所示一样勾选所有基本设置包:enter image description here

  4. 应用更改 enter image description here

  5. 安装完成后,将C:\MinGW\bin复制并粘贴到系统变量中

打开“我的电脑”属性,按照下图操作:

enter image description here

您可能还需要安装以下软件:

  1. https://sourceforge.net/projects/gnuwin32/

VirusTotal检测到此文件受到感染 https://www.virustotal.com/gui/file/aab27bd5547d35dc159288f3b5b8760f21b0cfec86e8f0032b49dd0410f232bc - Tertius Geldenhuys

3

正如其他答案已经建议的那样,你必须先安装MinGW。额外的部分是将以下两个文件夹添加到PATH环境变量中。

  • C:\MinGW\bin
  • C:\MinGW\msys\1.0\bin

显然,根据你安装MinGW的位置进行调整路径。另外,不要忘记打开一个新的命令行终端。


1
"

'make'是UNIX/Linux系统中的一个命令。在MS Windows系统中,可以使用'nmake'命令代替它。或者你可以使用类似CYGWIN的模拟器。

"

3
nmake 也不是默认命令 - 至少在Win 8.1 32位操作系统中不是。 - foxidrive
9
nmake未被识别。 - programmer
你需要安装Visual Studio才能使用nmake。Windows默认不带此程序。 - mvd
4
我已经安装了Visual Studio,但是无法识别nmake命令。 - Paul Wintz
使用开发人员命令提示符,它将为您的命令窗口添加适当的路径。 - stephenbayer
对我来说,它是mingw32-make。 - Back2Lobby

0

使用搜索功能查找make.exe,找到后记下文件的绝对路径。您可以通过右键单击搜索结果中的文件名,然后选择属性或打开位置文件夹(我不确定确切的措辞,因为我没有使用英语区域设置)来完成此操作。

当您打开命令行控制台(cmd)时,不要输入make,而是输入完整的路径和名称,例如C:\Windows\System32\java(这是针对Java的...)。

或者,如果您不想每次都提供完整的路径,则有两种可能性:

  • 使用cd在cmd级别上将C:\Windows\System32\设置为当前工作目录。
  • C:\Windows\System32\添加到您的PATH环境变量中。

参考资料:


0

我正在使用Windows 8。我曾经遇到过同样的问题。我将路径"C:\MinGW\bin"添加到系统环境变量中,命名为'path',然后它就可以工作了。也许你可以尝试一下相同的方法。希望能对你有所帮助!


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