如何使用 MinGW 在命令行上编译 C 程序?

Posted

技术标签:

【中文标题】如何使用 MinGW 在命令行上编译 C 程序?【英文标题】:How to compile C program on command line using MinGW? 【发布时间】:2012-05-26 13:28:09 【问题描述】:

在 Windows 7 的命令行中必须输入什么命令来编译一个基本的 C 程序?

就像我真的想知道你在命令提示符下键入什么来编译一个 .c 文件。

我试过了:

> gcc foo.c

但它说:

'gcc' is not recognized as an internal or external command, 
 operable program or batch file.

我也试过了:

> minGW foo.c

但我回来了:

 'minGW' is not recognized as an internal or external command, 
  operable program or batch file.

我将路径环境变量设置为安装 MinGW 的位置:

C:\Program Files (x86)\CodeBlocks\MinGW\bin

我真的找不到任何关于哪里出错的信息,也找不到官方 MinGW 文档中的任何内容,因为这似乎是一个如此简单、令人尴尬的问题,以至于它被认为是人们知道该怎么做吗?

【问题讨论】:

我有一个名为 test.c 的小程序,我想从 Windows 的命令行编译它。我 cd 到它所在的正确目录,但 gcc 命令返回无法识别的命令,make 也是如此。 @CodyGray 您的链接似乎已损坏。更新一下好吗? 【参考方案1】:

第一:

在系统变量 => 路径中添加您的 minGW 的 bin 文件夹目录(例如:C\mingw64\bin)。 visual example


编译:

.c: gcc 文件名.c -o 欲望

.cpp: g++ 文件名.cpp -o 欲望


运行:

desire/ ./desire

【讨论】:

【参考方案2】:

在 Windows 10 中,可以在其他版本的 Windows 中遵循类似的步骤。

右击“我的电脑”选择属性,进入高级系统设置->高级->选择“环境变量..”。

找到“路径”选择它并选择编辑选项 -> 单击新建并添加“C:\MinGW\bin”(或 gcc.exe 的位置,如果您已安装在其他位置)-> 保存并重新启动命令提示符。 Gcc 应该可以工作。

【讨论】:

【参考方案3】:

您可以永久包含 MinGW 文件的目录,方法是单击我的电脑、属性、高级系统设置、环境变量,然后编辑并粘贴您的目录。

【讨论】:

【参考方案4】:

我回答这个问题很晚(确切地说是 5 年),但我希望这对某人有所帮助。

我怀疑这个错误是因为环境变量而不是 GCC。当您设置一个新的环境变量时,您需要打开一个新的命令提示符!这是 90% 的问题(当我第一次下载 GCC 时,我坚持了 3 个小时!)如果不是这种情况,你可能没有正确设置环境变量,或者你在一个文件夹中名称中的空格。

一旦你有 GCC 工作,每次编译和删除都会很麻烦。如果你不想安装完整的 ide 并且已经安装了 python,试试这个 github 项目:https://github.com/sophiadm/notepad-is-effort 它是一个用 tkinter 在 python 中编写的小型 IDE。您只需复制源代码并将其保存为 .py 文件即可

【讨论】:

【参考方案5】:

你的gcc在哪里?

我的gcc 在“C:\Program Files\CodeBlocks\MinGW\bin\”中。

"C:\Program Files\CodeBlocks\MinGW\bin\gcc" -c "foo.c"
"C:\Program Files\CodeBlocks\MinGW\bin\gcc" "foo.o" -o "foo 01.exe"

【讨论】:

【参考方案6】:

我对包含函数的 .c 文件(不是我的程序的 main())有同样的问题。比如我的头文件是“fact.h”和“fact.c”,而我的主程序是“main.c”,所以我的命令是这样的:

E:\proj> gcc -c fact.c

现在我有一个 fact.c (fact.o) 的目标文件。之后:

E:\proj>gcc -o prog.exe fact.o main.c

然后我的程序 (prog.exe) 就可以使用并正常工作了。我认为gcc 之后的-c 很重要,因为它生成的目标文件可以附加到我们需要的程序中。如果不使用-c,gcc 会在您的程序中查找 main,如果找不到,则会出现此错误。

【讨论】:

【参考方案7】:

我遇到了这个问题,但不知道为什么它一直在发生。原因很简单:一旦你设置了环境路径,你必须关闭 CMD 窗口,然后再次打开它,它会知道新的环境路径。

【讨论】:

这个。我打开了 5 个博客,10 篇新文章,检查了 20 次路径,我忘记了关闭并重新打开 CMD 以反映更改的变量...【参考方案8】:

在将 MinGW 压缩包解压到 C:\MinGW 并将环境变量的路径设置为 C:\MinGW\bin; 后,我遇到了同样的错误消息。

当我尝试编译时出现此错误!

gcc: 错误: CreateProcess: 没有这样的文件或目录

我终于发现一些下载的档案在将它们解压到C:\MinGW 时被报告损坏(但我最初忽略了这一点)。 一旦我删除了损坏的文件并再次从 SourceForge 重新下载整个档案,将它们成功解压缩到 C:\MinGW,错误就消失了,编译器工作正常并输出我想要的 hello.exe

我跑了这个:

gcc hello.c -o hello

结果结果是这样的(闪烁的下划线):

_

【讨论】:

【参考方案9】:

表示找不到gcc.exe

我将路径环境变量设置为安装 MinGW 的位置

也许你没有正确设置路径?

echo %path%

显示 gcc.exe 的路径?否则编译类似于Unix:

gcc filename.c -o filename

【讨论】:

Echo %path% 返回 C:\Program Files (x86)\CodeBlocks\MinGW\bin 并且在 bin 中是 gcc.exe ,完全匹配它的位置? 'gcc' 未被识别为内部或外部命令、可运行程序或批处理文件。 如果你 cd 到 C:\Program Files (x86)\CodeBlocks\MinGW\bin 并输入命令 gcc --version 会发生什么? 也许,尝试卸载mingW并安装到C:\mingw并设置路径,再看看是否有效。 @kingsindian 众所周知,MinGW 在包含空格的路径方面存在问题。所以这就是它在文件夹 C:\mingw 中工作的原因【参考方案10】:

我曾经在安装 MinGW 以在 Windows 中工作时遇到这种问题,即使我在环境变量中添加了正确的系统 PATH。

经过几天的痛苦,我终于偶然发现了一个线程,建议卸载原始 MinGW 编译器并删除 C:\MinGW 文件夹并安装 TDM-GCC MinGW 编译器,可以在 here 找到。

您可以从下载页面选择 64/32 位安装程序,它也会为您创建环境路径变量。

【讨论】:

【参考方案11】:

如果您将文本粘贴到路径变量中并在分号前添加了一个空格,则应将其删除并在目录末尾添加一个反斜杠 (;C:\Program Files (x86)\CodeBlocks\MinGW\bin

【讨论】:

【参考方案12】:

只需将环境变量设置为 gcc.exe 的确切路径,如下所示:

C:\Program Files (x86)\CodeBlocks\MinGW\bin\gcc.exe

【讨论】:

永远不要在包含“程序文件”等空格的路径上安装mingw【参考方案13】:

您可以输入msys shell,而不是设置%PATH%。在标准的 msys 和 mingw 安装中,gcc 在路径中,因此您可以运行 gccwhich gcc

我的 Windows 7 上有一个批处理文件 sh.bat,位于 %PATH% 中:

C:\lang\msys\bin\sh.exe --login %*

每当我想使用 gcc 时,我都会输入 cmd,然后是 sh,然后是 gcc。我觉得很方便。

在使用源自 linux 的软件时,请避免使用间隔目录,例如 Program Files。将它们安装到Program_Files。对于您可能希望在 msys 环境中运行的工具也是如此。

【讨论】:

以上是关于如何使用 MinGW 在命令行上编译 C 程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Mingw-64在 Kali Linux上编译Windows漏洞

如何在 QT Creator 中使用 mingw 在多核上编译

在 Wt 上编译 hello world 的问题

在 Mingw 上编译的 C/C++ 代码能否保证与 GCC 完全兼容(在 linux 和 Mac 上)

Windows命令行工具编译c++11工程

如何在windows上编译Chromium 并加入MP3支持