您当前的位置:首页 > 计算机 > 软件应用 > 开发工具(IDE)

MinGW安装教程——著名C/C++编译器GCC的Windows版本

时间:07-27来源:作者:点击数:
前言

本文主要讲述如何安装 C语言 编译器——MinGW,特点是文章附有完整详细的实际安装过程截图,文字反而起说明提示作用。

编写本文的原因始于我的一个观点:图片可以比文字传达更多的信息,也能让其他人更容易理解作者的意图及思想。因此,我将安装 MinGW 的过程和步骤,编写成了这篇以图片为主的教程,为了让看到这篇文章的任何人,都可以很容易按照图片所示正确安装 MinGW。

一、什么是 MinGW ?

MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API 和 MSYS,因此可以将源代码编译生成 Windows 下的可执行程序,又能如同在 Linux 平台下时,使用一些 Windows 不具备的开发工具。

一句话来概括:MinGW 就是 GCC 的 Windows 版本 。

二、为什么使用 MinGW ?
  1. MinGW 是开源软件,可以免费使用。
  2. MinGW 由一个活跃的开源社区在持续维护,因此不会过时。
  3. MinGW 支持最新的 C语言 标准。
  4. MinGW 使用 Windows 的C语言运行库,因此编译出的程序不需要第三方 DLL ,可以直接在 Windows 下运行。
  5. 那些著名的开源 IDE 实际只是将 MinGW 封装了起来,使它拥有友好的图形化界面,简化了操作,但内部核心仍然是 MinGW。

MinGW 是稳定可靠的、持续更新的 C/C++ 编译器,使用它可以免去很多麻烦,不用担心跟不上时代,也不用担心编译器本身有严重漏洞,可以放心的去编写程序。

三、MinGW 适合做什么?

对于熟悉 MinGW 的高手而言,它可以编译任何 C语言 程序。但对于一般人来说,MinGW 太过简陋,连图形用户界面都没有。对于习惯使用鼠标的人来说,是很痛苦的。虽然也可以通过一些配置,让 MinGW 拥有图形用户界面,但那个过程非常麻烦。

除此之外,编译复杂的程序时,还需要你会编写 Makefile ,否则只能一个文件一个文件的编译,可想而知会多么辛苦。

但对于初学 C语言 的人来说,MinGW 是正合适的编译器,至少黑色的命令提示符界面很有编程的气氛,感觉很酷。在刚开始学 C语言 时,一般情况下所有代码都写在一个文件中,只要输入几个简单的命令,就能用 MinGW 编译成可执行文件。虽然 VS2013 等编译器,只要点击下鼠标就可以完成编译,但它会自动生成一大堆工程文件,让初学者摸不着头脑。而 MinGW 则只会生成一个可执行文件。

如果对 MinGW 和 VS2013 等编译器进行一下形容,那么 MinGW 是手动的,而 VS2013 等编译器则是自动的。因此 MinGW 的编译过程更加直观容易理解,也比较适合C语言学习。

总而言之,对于一般人来说,MinGW 适合学习 C语言 时使用,真正工作还是用 VS2013 更好。当然如果您是在 Linux 下工作,那么Code::Blocks可能是一个选择,不过最大的可能是您必须习惯使用 GCC 来编译程序。

四、下载和安装 MinGW

在开始安装之前,请先确认您满足以下几个条件。 1.您的电脑已经连接到网络。 2.您的电脑硬盘有500MB的剩余空间。 3.您现在有充足的时间。(受您当前网速的影响,安装过程可能会花费1、2个小时以上的时间。)

如果您确认,您满足了上述条件,那么就可以开始安装 MinGW 了。

注意:教程中的图片都是实际安装时的原比例截图,如果您看不清图片中的提示语,可以将图片放大,不会影响清晰度。具体做法是点击图片,将会进入到图片的展示页面,在展示图片的左下角,有一个叫“原图”的链接,点击它即可。如果前面的方法失效,您仍然可以通过浏览器放大页面的功能,放大图片,例如在 Chrome 浏览器下,您可以按住 Ctrl 键,然后滚动鼠标滚轮,即可放大页面。

1.MinGW官方网站首页(http://www.mingw.org/)

MinGW 的官方网站地址是:http://www.mingw.org 。打开这个地址后,我们看到的就是 MinGW 的官方网站首页面,在其中找到 Downloads 下载链接,单击它进入 MinGW 的下载页面。

注意:安装MinGW的时候需要连接到网络,并且下载量很大,如果您的网络环境不是很好,很可能安装失败。

2.MinGW安装管理器下载页面

在 MinGW 的下载页面中,我们只需单击红色线框中的 Download mingw-get-setup.exe (86.5kB) 链接,下载安装程序即可,因为它总是最新的稳定版 MinGW。(当然如果您很了解 MinGW,也可以从橙色线框所示的目录中手动下载各组件。)

注意:这里下载的只是 MinGW 安装管理器的安装程序,将 MinGW 安装管理器正确安装后,才能安装 MinGW。请不要将安装 MinGW 安装管理器完成,误认为 MinGW已经安装完成了

3.MinGW安装管理器开始下载

弹出这个页面之后,倒数5秒,浏览器将会自动下载 MinGW 安装管理器的安装程序。如果您的浏览器没有自动开始下载,则可以点击绿色线框中的 direct link 链接,手动开始下载。下载安装程序的时间应该非常短,因为它只有不到100KB。

4.MinGW安装管理器的安装程序

双击运行 MinGW 安装管理器的安装程序。

MinGW 安装管理器的安装程序与Chrome、Adobe Flash Player的类似,是在线安装程序,必须联网才能正确安装。它只相当于一个下载器,当其运行时,将会从 MinGW 的官方服务器上下载真正的 MinGW 安装管理器。

5.MinGW安装管理器的安装程序——首页

双击运行 MinGW 安装管理器的安装程序后,会首先显示这个页面,上面写了一些 MinGW 安装管理器的介绍,这里我们不用管它,直接单击 Install 按钮开始安装。

注意:单击 View Licence 按钮可以查看软件的许可协议,MinGW 是开源软件,对于一般人来说,反正可以免费使用,至于具体条款,基本不需要在意。

6.MinGW安装管理器的安装程序——安装选项页

在这一步只需修改 MinGW 要安装在哪个目录,其他使用默认设置即可。

注意:安装 MinGW 需要500MB左右的硬盘空间,确定您选择的目录所在的硬盘分区有足够的剩余空间。

7.MinGW安装管理器的安装程序——管理器开始下载安装

现在安装程序已经正式开始下载并安装 MinGW安装管理器 了,在这个步骤里所花费的时间,决于您所在地区的网络环境的好坏,一般来说并不会花费太长时间,在数分钟范围内即可完成。

8.MinGW安装管理器的安装程序——管理器下载安装完成

现在 MinGW 安装管理器已经安装完成,我们可以开始正式安装 MinGW 了。

9.MinGW安装管理器的快捷方式

MinGW 安装管理器安装完成后,会在桌面创建一个快捷方式,以后只要双击它就可以启动 MinGW 安装管理器,管理已安装的组件,或者添加安装新的组件。

10.MinGW安装管理器界面

这是 MinGW 安装管理器的主界面,通过这里我们可以下载、安装、管理 MinGW 和组件。

11.MinGW安装管理器——界面介绍

一般来说,我们只需要一些基础组件即可满足我们编译C/C++程序,所以选择左侧目录中的第一项 Basic Setup 即可,之后我们就可以在右侧选择需要的组件了。

12.MinGW安装管理器——查看组件

鼠标左键单击需要的组件,即可在主界面右下侧看到对于选择中组件的详细信息。

13.MinGW安装管理器——单击组件选框

然后在组件上单击鼠标右键,再在弹出的右键菜单中单击 Mark for Installation 选项,即可将组件进行标记。在之后的操作完成后,管理器将会自动安装被标记了的组件。

14.MinGW安装管理器——选中组件

如图所示,将所需的4个组件全部标记。

因为我们只是为了编译 C/C++ 程序,所以只需安装 mingw-developer-toolkit、mingw32-base、mingw32-gcc-g++、msys-base 这4个组件即可。

15.MinGW安装管理器——应用更改

在我们所需的4个组件都已标记完成后,单击菜单栏上的 Installation 选项,并在弹出的菜单中单击 Apply Changes 选项。

16.MinGW安装管理器——确定安装

弹出的这个是确认窗口,我们直接单击 Apply 按钮,之后安装管理器就会真正的开始下载安装 MinGW 了。

17.MinGW安装管理器——开始下载安装MinGW组件

MinGW 安装管理器正在一边下载一边安装 MinGW,在这一过程中,视乎您的网络情况,可能会花费很长的时间。而且因为安装管理器链接的是外国的服务器,也会导致下载速度缓慢,所以我们需要耐心的等待一段时间。

18.MinGW安装管理器——MinGW安装完成

现在 MinGW 已经下载安装完成了,我们关闭这个窗口。

19.MinGW安装管理器——检查更新

这是 MinGW 安装管理器自动检测组件的更新情况,我们不用理会,直接关闭。

20.MinGW安装管理器——已安装的MinGW组件

在安装管理器的主页面中,我们已安装的 MinGW 组件的前面的复选框会填充成绿色,我们以后可以根据它来管理 MinGW 的组件。

21.MinGW安装目录结构

至此 MinGW 已经安装到了您的电脑中,但这时还无法使用它编译 C/C++ 代码,您需要对操作系统进行一些设置。

22.MinGW设置——属性

我们这时回到电脑桌面上,找到 这台电脑(Windows 7 以前的系统叫 我的电脑) 的图标,鼠标右击打开菜单,单击 属性 选项,会打开 系统 窗口。

23.MinGW设置——高级系统设置

我们在系统窗口中用鼠标单击页面左侧的 高级系统设置 选项,从而打开 系统属性 窗口。

24.MinGW设置——系统属性

在打开的系统属性窗口中,我们单击 高级 选项卡,切换到图片所示的页面,然后在用鼠标单击 环境变量 按钮。

25.MinGW设置——环境变量

拖动环境变量窗口下半部分的 系统变量 区域的滑块,并找到 Path 这个变量,然后单击选中它,点击 编辑 按钮。

26.MinGW设置——复制bin目录地址

这时我们打开 MinGW 安装目录中的 bin 目录,然后单击地址栏,复制红色线框中的地址。

27.MinGW设置——设置path

把我们刚复制的 bin 目录的地址,粘贴在变量值输入框里所有值的最末尾,并且一定要注意用 ; 分号将它们分隔开,最后单击 确定 按钮保存修改。

现在 MinGW 已经配置完成,我们可以启动命令提示符测试一下了。

28.Win8启动命令提示符
29.命令提示符

现在我们开始测试 MinGW 是否安装成功。在打开的命令提示符窗口中,输入 gcc 这串字符,然后按键盘上的回车键(Enter)。

30.MinGW安装成功

恭喜,如果出现了上图所示的提示信息,则证明您的 MinGW 已经安装成功,可以用它来编译代码了。

五、使用MinGW编译代码

MinGW 是命令行工具,没有图形用户界面,全部操作靠在命令提示符中输入命令来执行。对于习惯了鼠标和图形用户界面的人,这种操作方式会比较难以接受,可能会产生为什么没有图形用户界面这种疑问。你可能在网上找到很多长篇大论,来向你解释不那么做的理由,而在这里我简单明了的告诉你,之所以没有图形用户界面,是因为编写一个图形用户界面非常麻烦,而大部分程序员都讨厌麻烦,既然没有图形用户界面也可以用,何必自找麻烦呢?将这些节省下来的时间,用在提升程序效率方面显然更划算。

当然,世界上有很多 IDE ,它们有着漂亮的图形用户界面,而内置的编译器就是 GCC ,如果你实在不想用命令行工具,也可以使用它们。

A.MinGW的gcc编译命令

格式:gcc 源代码文件的名字

示例:gcc hello.c 解释:gcc 是 MinGW 内置的编译命令,hello.c 则是我们要编译的源代码文件的名字。 注意:首先,gcc 命令和源代码的文件名之间有一个空格。其次,文件名必须完整正确,不能省略后缀名。

因为 MinGW 本来就是将 GCC 移植到 Windows 上的产物,所以操作方式和 GCC 一样,只是在 Linux 下命令是被键入到“终端”中,而 Windows 下则是被键入到“命令提示符”里。

B.创建hello.c源代码文件

在用 gcc 命令编译源代码之前,我们首先要有一个存储了C语言代码的文件。C语言的源代码文件其实就是普通的文本文件,唯一的区别就是后缀名不同,文本文件的后缀名是 .txt ,而C语言源代码文件的后缀名是 .c 。

所以我们新建一个文本文件,名字可以任意取,我这里就将其命名为 hello ,现在文件的完整名字就是 hello.txt 了。之后我们只需要把 hello.txt 的后缀名 .txt 更改为 .c 后缀名,这样就得到了C语言源代码文件 hello.c 了。

C.在hello.c文件里编写代码

这里用 Windows 自带的记事本或任意文本编辑器,将 hello.c 这个源代码文件打开,然后将上图所示的测试代码键入到文件中,最后保存文件即可。现在测试用的源代码文件已经准备完成,我们可以进行下一步的编译了。

这段代码是最基础的 hello world 程序,会在屏幕上显示 hello, world 这段文字。相信这是学编程的大多数人,入门时的第一个程序,所以这里也就不再赘述了。

D.将hello.c编译成可执行文件

之前说过 MinGW 是命令行工具没有图形用户界面,所以编译操作需要在命令提示符中进行。

首先我们打开命令提示符,然后要将工作目录定位到源代码文件的存储位置,这一步非常重要,没有接触过命令行工具的人,往往会在这里出错。DOS 命令 cd 可以改变当前的工作目录,具体做法是 cd 命令后面加上目标工作目录,如上图第三行,就是重新定位到 d 盘的 test 目录下。使用完 cd 命令后,还要再键入一次定位到的目录的地址,这样才会转移过去,但只需要键入盘符即可,并不需要键入完整地址,如上图第四行。工作目录重新定位后,如上图第五行所示,工作目录已经从 C:\Users\lenovo 更改为 d:\test 。

现在我们只需要执行 gcc hello.c 这行命令,就可以将源代码编译为可执行程序了。

E.hello.c编译后的可执行程序

如上图所示,a.exe 就是编译后生成的可执行程序。因为我们编译时没有指定生成的程序名,所以 MinGW 默认将程序命名为 a ,加上后缀名就是 a.exe 了。如果我们想在编译时就指定生成的程序名,就需要使用 gcc 命令的 -o 选项了。

F.MinGW编译命令gcc的-o参数

格式:gcc 源代码文件的名字 -o 编译后程序的名字

示例:gcc hello.c -o hello.exe 解释:gcc 这个命令拥有很多内置选项,其中 -o 表示将它后面的单词设置编译后文件的名字。 注意:选项 -o 是英文字母,并不是数字零,并且它的后面只能是想设置的文件名。

这种在编译时命名的方法好像很鸡肋,初看好像只是帮我们省了一些时间,毕竟我们也可以在编译后手动改名。这种想法是因为我们的程序还很简单,只有一个源代码文件,也只会编译出一个程序。当以后我们的程序变复杂了,可能会在一个工作目录下编译出复数个程序,这时就必须用 -o 选项了,否则编译出的程序都叫 a.exe ,会在生成时互相覆盖掉。

G.将hello.c编译成名字是hello.exe的程序

同样要先定位到我们在用的工作目录下,然后执行 gcc hello.c -o hello.exe 这条命令,就会编译生成一个名叫 hello.exe 的可执行文件了。

H.hello.c编译后的hello.exe程序

执行完 gcc hello.c -o hello.exe 编译命令后,会在工作目录中生成 hello.exe 可执行程序,这就是我们得到的最终成果。

I.双击运行hello.exe程序

用鼠标双击运行编译后的 hello.exe 程序,会启动一个命令提示符窗口,并在里面显示 hello, world 这几个字符。这代表我们成功的完成了一次编译,将那段C语言代码编译成了计算机可以执行的程序。

J.在命令提示符中运行hello.exe程序

想要运行编译好的程序,并不是非要用鼠标双击程序启动,也可在命令提示符中直接输入编译后的程序名称,例如输入 hello.exe ,也可以直接运行程序。甚至可以省略程序的后缀名,只需输入 hello 即可,程序同样会正确的运行。

K.使用 MinGW 的进阶学习

上述只是简单的编译源代码的方法,适用于单个或少量源代码文件,如果是复杂的大型程序,要用到 makefile 来组织源代码时,就需要 mingw32-make 命令了。

如果程序编译或运行出错,需要调试源代码,则可以使用 gdb 命令,来帮助我们确定问题产生在哪里。

如果代码没有明显的编译错误,运行时也没有逻辑错误,则在最终编译为可发布版的程序时,我们还要考虑编译优化的问题,以便生成的程序文件拥有更小的体积,和更高的运行效率。gcc 命令有 -00 、 -01 、 -02 、 -03 这几个优化选项,其中 -00 是默认选项,意思是无优化,剩下的几个选项随数字的增大,优化程度也会逐渐增强。


Ps:各个Package的作用:

MinGW

—- MinGW Base System

——– MinGW Compiler Suit

———— mingw32-binutils 必选,用于编译生成的 .o 文件的链接、汇编、生成静态库等。

———— mingw32-gcc 必选,核心的 C 编译器。

———— mingw32-gcc-ada 可选,Ada 编译器。

———— mingw32-gcc-fortran 可选,Fortran 编译器。

———— mingw32-gcc-g++ 建议,C++ 编译器。

———— mingw32-gcc-objc 可选,Objective-C 编译器。

———— mingw32-gcc-v3-* 不建议,第三版 GCC 编译器。

———— mingw32-libgcc 必需,C 编译器编译出来的程序的运行库。

———— mingw32-libgfortran 可选,如选择了 Fortran 编译器,则必选,Fortran 运行库。

———— mingw32-libgnat 可选,如选择了 Ada 编译器,则必选,Ada 运行库。

———— mingw32-libobjc 可选,如选择了 Objective-C 编译器,则必选,Objective-C 运行库。

———— mingw32-libstdc++ 可选,如选择了 C++ 编译器,则必选,C++ 运行库。

———— mingw32-libgomp 可选,GNU OpenMP 库,高精度运算。

———— mingw32-libquadmath 可选,QuadMath 库,数学运行。

———— mingw32-libssp 可选,StackProtect 库,栈保护。

———— mingw32-mingwrt 必选,MinGW 工具的运行库。

———— mingw32-w32api 必选,运行 Windows 程序所必需的 DLL 文件。

——– MinGW Source-Level Debugger

———— mingw32-gdb 可选,GNU Debugger,命令窗口的调试器。

——– MinGW Standard Libraries

———— mingw32-gmp 可选,GNU 多精度运算库。

———— mingw32-libgmp 可选,GMP 库的 DLL 文件。

———— mingw32-libgmpxx 可选,GMP 库用于 C++ 的 DLL 文件。

———— mingw32-mpfr 可选,MPFR 多精度运算库。

———— mingw32-libmpfr 可选,MPFR 多精度浮点运算库的 DLL 文件。

———— mingw32-mpc 可选,MPC 多精度运算库。

———— mingw32-libmpc 可选,MPC 多精度浮点运算库的 DLL 文件。

———— mingw32-libpthread-old 可选,旧版本的 POSIX 线程库的 DLL 文件。

———— mingw32-libpthreadgc 可选,标准的 POSIX 线程库的 DLL 文件。

———— mingw32-libpthreadgce 可选,使用 C++ 异常处理的 POSIX 线程库的 DLL 文件。

———— mingw32-libquserex 可选,用于内核态的 POSIX 线程库的 DLL 文件。

———— mingw32-libz 可选,zlib 库,用于 Zip 压缩及解压。

———— mingw32-mingwrt 必选,MinGW 的开发库。

———— mingw32-pthreads-w32 可选,POSIX 线程库的开发文件。

———— mingw32-w32api 必选,Win32 SDK 的开发库。

—- MinGW Libraries

——– MinGW Supplementary Libraries

———— mingw32-lua 可选,Lua 语言的编译器、运行库等。

——– MinGW Contributed Libraries

———— mingw32-libunistring 可选,Unicode 字符串处理库。

—- MinGW Contributed

——– MinGW Contributed Applications

———— mingw32-tcl 可选,Tool Command Language,tcl 语言。

———— mingw32-tk 可选,tcl 语言的图形用户界面。

———— mingw32-xerces-c 可选,Xerces-C++ XML 解析库。

—- MinGW Autotools

——– mingw32-autoconf 可选,用于 MSYS,Autoconf 的封装脚本

——– mingw32-autoconf2.* 可选,最好全选,自动配置脚本生成工具。

——– mingw32-automake 可选,用于 MSYS,Automake 的封装脚本

——– mingw32-automake1.* 可选,最好全选,自动 Makefile 生成工具。

——– mingw32-autotools 可选,用于 MSYS,自动选择 autoconf automake 等 Package。

——– mingw32-gettext 建议,GNU 软件国际化(即多语言)库。

——– mingw32-libasprintf 建议,GNU 软件国际化库。

——– mingw32-libcharset 可选,字符集转换库。

——– mingw32-libgettextpo 建议,GNU 软件国际化(即多语言)库。

——– mingw32-libiconv 可选,字符集转换库。

——– mingw32-libintl 建议,GNU 软件国际化库的运行时 DLL 文件。

——– mingw32-libltdl 可选,可移植的 dlopen 替代库。

——– mingw32-libtool 可选,共享库生成工具。

MSYS

—- MSYS Base System

——– msys-base 可选,自动选择 MSYS 开发环境所需的一般的 Package。

——– msys-bash 必选,Bash (Bourne Again SHell),脚本解释器。

——– msys-bzip2 建议,bzip2 工具及开发库、运行库。

——– msys-core 必选,MSYS 核心文件。

——– msys-coreutils 必选,MSYS 核心工具。

——– msys-diffutils 建议,文件差别比较工具。

——– msys-dos2unix 可选,将 DOS (即 Windows) 换行符转换为 Unix 换行符。

——– msys-file 可选,判断文件类型的工具。

——– msys-findutils 建议,查找文件的工具。

——– msys-gawk 建议,字符串型 (Pattern) 扫描和处理语言的解释器。

——– msys-grep 建议,打印匹配型 (Pattern) 的字符串的工具。

——– msys-gzip 建议,gzip 工具及开发库、运行库。

——– msys-less 建议,命令行的文本查看器。

——– msys-locate 可选,基于数据库的 ‘find’ 工具。

——– msys-m4 建议,GNU 宏处理器。

——– msys-make 建议,GNU Make 工具。

——– msys-patch 建议,文件打补丁工具。

——– msys-sed 建议,GNU 流编辑器。

——– msys-tar 建议,GNU Tar 文件打包工具。

——– msys-termcap 建议,终端数据库。

——– msys-texinfo 建议,显示帮助文件的工具。

——– msys-tiny 可选,自动选择 MSYS 所需的最少 Package。

——– msys-xz 建议,lzma 工具及开发库、运行库。

—- MinGW Developer Toolkit

——– mingw-developer-toolkit 建议,自动选择 MSYS 环境下用于 MinGW 开发所需的 Package。

——– msys-autogen 建议,简化程序的生成,配合 autotool 使用。

——– msys-bison 建议,GNU 语法分析器生成器。

——– msys-bsdcpio 可选,BDS 版的 cpio 工具。

——– msys-bsdtar 可选,BSD 版的 tar 工具。

——– msys-cvs 可选,CVS 版本控制工具。

——– msys-diffstat 可选,diff 工具生成文件的查看器。

——– msys-flex 建议,快速词汇分析器生成器,一般和 bison 一起使用。

——– msys-guile 建议,Scheme 解释器和库。

——– msys-help2man 可选,生成 man 页面。

——– msys-inetutils 可选,通用网络客户端,包括 telnet ftp 等。

——– msys-libopenssl 建议,OpenSSL 库。

——– msys-lndir 可选,Xorg 递归目录符号链接工具。

——– msys-mksh 可选,MirBSD Korn Shell,脚本解释器。

——– msys-mktemp 可选,创建临时文件或目录。

——– msys-openssh 建议,OpenSSH,SSH 客户端。

——– msys-openssl 建议,OpenSSL 工具。

——– msys-perl 建议,Perl 解释器。

——– msys-rsync 建议,文件传输程序。

——– msys-vim 可选,控制台下的文件编辑器。

—- MSYS System Builder

——– 这个是用于编译用于 MSYS 系统的程序的编译器,一般不需要

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐