【问题标题】:How to compile makefile using MinGW?如何使用 MinGW 编译 makefile?
【发布时间】:2012-08-02 07:07:09
【问题描述】:

我是新手。只是想问如何编译一个makefile。我在 C 语言中使用 MinGW 编译器。我必须将所有文件保存在 MinGW\bin 中吗?因为现在我的文件在不同的目录中。

感谢您的帮助。

【问题讨论】:

  • 当然不是,你不应该把 anything 放在 mingw\bin 中。你的确切问题是什么? (即解释你失败的原因。)
  • 如果你有一个 Makefile.am,那么我建议你阅读更多关于 automakeautoconf 的信息。
  • 好的,我有一个 C 项目,我的主管要求我编译。该项目包含一个makefile.in 和makefile.in。我对此知之甚少。经过研究,我设法安装了 MinGW 编译器。我还更改了变量环境和命令提示符中指向文件位置的目录。现在,谁能告诉我如何编译这个项目?真的很感激。
  • 你安装了mingw32-make.exe吗?
  • 我解决了将 MinGW\bin\mingw32-make.exe 重命名为 MinGW\bin\make.exe

标签: c compiler-construction makefile mingw


【解决方案1】:

摘自http://www.mingw.org/wiki/FAQ

make 和 mingw32-make 有什么区别?

make 的“本机”(即:依赖于 MSVCRT)端口缺少某些功能,并且由于 Win32 上缺少 POSIX 而修改了功能。 MSYS 发行版中还存在一个依赖于 MSYS 运行时的 make 版本。该端口的操作更多地与 make 的预期操作相同,并且在执行期间减少了令人头疼的问题。基于此,MinGW 开发人员/维护人员/打包人员决定最好重命名本机版本,以便“本机”版本和 MSYS 版本可以同时存在而不会发生文件名冲突。

所以,查看 C:\MinGW\bin 目录并首先确定你安装了什么可执行文件。(make.exe 或 mingw32-make.exe)

在使用MinGW之前,你应该添加C:\MinGW\bin;使用http://www.mingw.org/wiki/Getting_Started/中提到的指令到 PATH 环境变量

然后 cd 到您有 makefile 的目录并尝试使用 mingw32-make.exe makefile.in 或简单地使用 make.exe makefile.in(取决于 C:\MinGW\bin 中的可执行文件)。

如果您想要基于 GUI 的解决方案,请安装 DevCPP IDE,然后重新制作。

【讨论】:

  • 刚安装了mingw,bin文件夹里都没有。
  • mingw32-make 已经好几年没出现了!过时和不推荐使用,MinGW 回购 URL 很难导航,它们只是留下旧的回购和 URL,多年未使用。请注意!
  • @ecoe 确保您安装了正确的版本,您可以尝试:this link,这对我有用,使用 gcc 和 gdb 8.1
  • 那个常见问题链接对我不起作用,所以我使用了sourceforge.net/p/mingw-w64/wiki2/FAQ
【解决方案2】:

你必须主动选择安装MSYS来获取make.exe。因此,如果 MinGW 安装正确,您应该始终至少拥有(本机)mingw32-make.exe。如果您安装了 MSYS,您将拥有 make.exe(可能在 MSYS 子文件夹中)。

请注意,许多项目需要首先创建一个 makefile(例如,使用配置脚本或 automake .am 文件),而这一步需要 MSYS 或 cygwin。让您想知道他们为什么要费心分发本机品牌。

一旦有了 makefile,就不清楚本机可执行文件是否需要与 MSYS make 不同的路径分隔符(正斜杠与反斜杠)。任何自动生成的 makefile 都可能具有 unix 样式的路径,假设本机 make 可以处理这些,编译后的输出应该是相同的。

【讨论】:

  • 使用 Cmake for windows 生成 makefile。 cd 到目录并使用 mingw32-make.exe。
【解决方案3】:

我在 C:\MinGW\bin 的 bin 中有 MinGW 和 mingw32-make.exe。同样,我将 bin 路径添加到我的 Windows 路径。之后,我将其名称更改为 make.exe 。现在我可以在我的 Makefile 方向上编写命令“make”并像 Linux 一样执行我的 Makefile。

【讨论】:

  • 我是否必须将所有文件保存在 MinGW\bin 中?不要,让您的源代码文件在哪里,您要做的就是将此目录添加到 Windows-path 中的“路径”-变量中,这就是您已经做的。
【解决方案4】:

首先检查 mingw32-make 是否安装在您的系统上。 在 windows 终端或 cmd 中使用 mingw32-make.exe 命令进行检查, 否则安装软件包 mingw32-make-bin。

然后去bin目录默认(C:\MinGW\bin)新建文件make.bat

@echo off
"%~dp0mingw32-make.exe" %*

添加以上内容并保存

在powershell中设置环境变量

$Env:CC="gcc"

然后编译文件

make hello

其中 hello.c 是源代码的名称

【讨论】:

  • tnx,帮助很大
【解决方案5】:

请了解 automake 和 autoconf。

Makefile.am 由 automake 处理以生成 Makefile,该 Makefile 由 make 处理以构建您的源代码。

http://www.gnu.org/software/automake/

【讨论】:

  • 这意味着我只能使用 automake 编译文件?
  • 此链接没有任何信息可以帮助解决用户的问题而无需大量挖掘。
【解决方案6】:

我在这里找到了一个很好的例子:https://bigcode.wordpress.com/2016/12/20/compiling-a-very-basic-mingw-windows-hello-world-executable-in-c-with-a-makefile/

这是一个在 windows 上使用 MinGW 的简单 Hello.c(您可以将 c++ 与 g++ 一起使用而不是 gcc)。

Makefile 看起来像:

EXECUTABLE = src/Main.cpp

CC = "C:\MinGW\bin\g++.exe"
LDFLAGS = -lgdi32

src = $(wildcard *.cpp)
obj = $(src:.cpp=.o)

all: myprog

myprog: $(obj)
    $(CC) -o $(EXECUTABLE) $^ $(LDFLAGS)

.PHONY: clean
clean:
    del $(obj) $(EXECUTABLE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 2019-07-11
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多