【问题标题】:make/mingw32-make command isn't working on windows 10make/mingw32-make 命令在 Windows 10 上不起作用
【发布时间】:2021-07-20 05:06:15
【问题描述】:

我已经为 C 安装了make 编译器,但它不起作用。我安装了 MinGW 并安装了 mingw32-make 和 choco make,但它们都不起作用。当我尝试编译名为 hello.c 的 hello world C 程序时,它们都输出相同的错误:

#include <stdio.h>

int main(void)
{
  printf("Hello, world!");
  return 0;
}

然后,我在终端输入make hellomingw32-make hello,输出如下:

cc     hello.c   -o hello
process_begin: CreateProcess(NULL, cc hello.c -o hello, ...) failed.
make (e=2): El sistema no puede encontrar el archivo especificado. (System couldn't find the specified file)
make: *** [<builtin>: hello] Error 2

如果我改为输入make hello.cmingw32-make hello.c,则会输出:

make/mingw32-make: Nothing to be done for 'hello.c'.

但是,使用gcc 命令确实有效,所以我不知道该怎么做。如果有人知道该怎么做,请帮忙。谢谢!

【问题讨论】:

  • Make 不是编译器。 Make 是一个构建控制工具,它可以调用编译器。编译器是一个完全不同的程序,您必须单独安装。在这种情况下,make 试图调用编译器cc,这显然在您的系统上不存在。所以要么你没有安装 C 编译器,要么你已经安装了一个但它没有被称为 cc 在这种情况下你必须告诉 make 它被称为什么(通常通过在你的 makefile 中设置 CC 变量或make 命令行)。

标签: c gcc makefile mingw chocolatey


【解决方案1】:

用这个命令行调用make:

make CC=gcc hello

编译C程序的内置规则使用CC作为编译器的宏,默认为cc

但是,如果您的项目增长,您将需要创建一个 makefile。请阅读 make 的文档和一些教程以了解如何执行此操作。这个makefile会用你自己的替换一些内置的规则,你就可以定义GCC为编译器了。

【讨论】:

  • 哦,好的,谢谢。有没有办法让 gcc 成为编译器的默认宏? (我的项目不会增长,因为我只是想从我的计算机上运行一些旧的 CS50 文件,但我认为我不会将 C 用于“真实”的东西)
  • 嗯,make 是开源的。您可以获取其来源并进行更改。 - 我目前没有时间研究它,但文档可能会说些什么。例如,您可以设置一个环境变量。 -- 对于您计划的如此简单的项目,makefile 真的很简单。 -- 几年前,我什至使用 make 的选项 -r 来禁用所有内置规则,以确保在我的 makefile 中定义了任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 2016-05-27
  • 1970-01-01
  • 2014-08-03
  • 2016-02-21
相关资源
最近更新 更多