本文主要讲述如何安装 C语言 编译器——MinGW-w64,特点是文章附有完整详细的实际安装过程截图,文字反而起说明提示作用。
编写本文的原因始于我的一个观点:图片可以比文字传达更多的信息,也能让其他人更容易理解作者的意图及思想。因此,我将安装 MinGW-w64 的过程和步骤,编写成了这篇以图片为主的教程,为了让看到这篇文章的任何人,都可以很容易按照图片所示正确安装 MinGW-w64。
我希望写出一篇即使是⑨也可以看懂的 MinGW-w64 安装教程。
一、什么是 MinGW-w64 ?
MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。一句话来概括:MinGW 就是 GCC 的 Windows 版本 。
以上是 MinGW 的介绍,MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。
正因为如此,MinGW 现已被 MinGW-w64 所取代,且 MinGW 也早已停止了更新,内置的 GCC 停滞在了 4.8.1 版本,而 MinGW-w64 内置的 GCC 则更新到了 6.2.0 版本。
二、为什么使用 MinGW-w64 ?
1. MinGW-w64 是开源软件,可以免费使用。
2. MinGW-w64 由一个活跃的开源社区在持续维护,因此不会过时。
3. MinGW-w64 支持最新的 C语言 标准。
4. MinGW-w64 使用 Windows 的C语言运行库,因此编译出的程序不需要第三方 DLL ,可以直接在 Windows 下运行。
5. 那些著名的开源 IDE 实际只是将 MinGW-w64 封装了起来,使它拥有友好的图形化界面,简化了操作,但内部核心仍然是 MinGW-w64。
MinGW-w64 是稳定可靠的、持续更新的 C/C++ 编译器,使用它可以免去很多麻烦,不用担心跟不上时代,也不用担心编译器本身有bug,可以放心的去编写程序。
三、MinGW-w64 适合做什么?
对于熟悉 MinGW-w64 的高手而言,它可以编译任何 C语言 程序。但对于一般人来说,MinGW-w64 太过简陋,连图形用户界面都没有。这让习惯使用鼠标的人,感到很痛苦。虽然也可以通过一些配置,让 MinGW-w64 拥有图形用户界面,但那个过程非常麻烦。
除此之外,编译复杂的程序时,还需要你会编写 Makefile ,否则只能一个文件一个文件的编译,可想而知会多么辛苦。
但对于初学 C语言 的人来说,MinGW-w64 是正合适的编译器,至少黑色的命令提示符界面很有编程的气氛,感觉很酷。
在刚开始学 C语言 时,所有代码通常都写在一个文件中,只要输入几个简单的命令,就能用 MinGW-w64 编译成可执行文件。虽然 VS2015 等编译器,只要点击下鼠标就可以完成编译,但它会自动生成一大堆工程文件,让初学者摸不着头脑。而 MinGW-w64 则只会生成一个可执行文件。
如果对 MinGW-w64 和 VS2015 等编译器进行一下形容,那么 MinGW-w64 是手动的,而 VS2015 等编译器则是自动的。因此 MinGW-w64 的编译过程更加直观容易理解,也比较适合C语言学习。
总而言之,对于一般人来说,MinGW-w64 适合学习 C语言 时使用,真正工作还是用 VS2015 更好。当然如果您是在 Linux 下工作,那么Code::Blocks可能是一个选择,不过最大的可能是您必须习惯使用 GCC 来编译程序。
四、下载和安装 MinGW-w64
在开始安装之前,请先确认您满足以下几个条件。
1.您的电脑已经连接到网络。
2.您的电脑硬盘有500MB的剩余空间。
3.您现在有充足的时间。(受您当前网速的影响,安装过程可能会花费10几分钟或1个小时以上的时间。)
如果您确认,您满足了上述条件,那么就可以开始安装 MinGW-w64 了。
注意:教程中的图片都是实际安装时的原比例截图,如果您看不清图片中的提示语,可以将图片放大,不会影响清晰度。想要观看大图,只需点击图片,就会跳转到原始尺寸的图片页面中。如果前面的方法失效,您仍然可以通过浏览器放大页面的功能,放大图片,例如在 Chrome 浏览器下,您可以按住 Ctrl 键,然后滚动鼠标滚轮,即可放大页面。
http://mingw-w64.org ,首页样式如上图所示。
操作:点击红框中的“Downloads”超链接,进入 MinGW-w64 下载详情页面。
2.MinGW-w64下载详情页面
操作:点击红框中的“SourceForge”超链接,就会进入 SourceForge 中的 MinGW-w64 下载页面。
3.SourceForge 中的 MinGW-w64 下载页面
操作:点击红框中的“Download mingw-w64-install.exe”超链接,将会下载这个 MinGW-w64 自动安装的程序。
4.等待 MinGW-w64 安装程序开始下载
操作:只需等待。
注意:如果浏览器没有自动下载,则可以点击黄框中的“direct link”超链接,手动下载。如果下载速度非常慢,可以点击绿框中的“mirror”超链接,选择一个离自己近的镜像网站,可能会获得较高(无法保证)的下载速度。
5.正在下载 mingw-w64-intall.exe
操作:只需等待。
6.MinGW-w64 安装程序
操作:用鼠标双击运行 mingw-w64-install.exe 。
注意:如果出现无法运行,或者安装出错,你可以右键点击它,并在弹出窗口中选择“以管理员身份运行”选项,重新运行 mingw-w64-install.exe ,基本可以解决大部分问题。
7.MinGW-w64 安装程序欢迎界面
操作:点击红框中的 “Next” 按钮,将会进入下一步安装步骤。
8.从服务器获取 MinGW-w64 文件信息
操作:只需等待。
9.MinGW-w64 版本选择
操作:选择 Version、Architecture、Threads、Exception、Build revision 下拉列表中适当的选项,接下来将会详细介绍这些选项。
10.选择 gcc 版本
操作:在这个版本中,最高版本是 6.2.0 ,选中它即可。
11.选择电脑系统架构
操作:我的电脑系统是 64位 的,所以我选择了 x86_64,如果你是 32位 系统,则选择 i686 即可。
12.选择操作系统接口协议
操作:我只开发在 Windows 下运行的程序,所以选择了 win32 。
13.选择异常处理模型(64位)
操作:我这里选择了 seh 。
14.选择异常处理模型(32位)
操作:建议选择 dwarf 。
15.建立修订
操作:选择默认选项。
16.MinGW-w64 版本选择完成
操作:点击红框中的“Next”按钮,进入下一个步骤。
17.选择 MinGW-w64 的安装目录
操作:点击红框中的“Browse”按钮,以便更改 MinGW-w64 的安装位置。
18.更改 MinGW-w64 的安装位置
操作:选择好安装的目录后,点击红框中的“确定”按钮,之后安装程序将把 MinGW-w64 安装到那里。
19.确认 MinGW-w64 安装目录
操作:确认安装目录没问题后,点击红框中的“Next”按钮,开始正式安装 MinGW-w64 。
20.开始下载 MinGW-w64 本体
操作:只需等待。
21.MinGW-w64 下载完成
操作:点击红框中的“Next”按钮,继续下一个步骤。
22.关闭 MinGW-w64 安装程序
操作:点击红框中的“Finish”按钮,将关闭 MinGW-w64 安装程序。
23.MinGW-w64 安装目录
操作:双击红框中的“mingw64”文件夹,进入其中。
24.MinGW-w64 的 mingw64 文件夹
操作:双击红框中的“bin”文件夹,进入其中。
25.MinGW-w64 的 bin 文件夹
操作:点击红框中的地址栏,并复制(Ctrl + c)那一串地址。
26.此电脑
操作:右键点击“此电脑”,在弹出的菜单中点击红框中的“属性”项。
27.计算机系统窗口
操作:点击红框中的“高级系统设置”链接,将打开“系统属性”窗口。
28.系统属性窗口
操作:点击红框中的“环境变量”按钮,将打开“环境变量”窗口。
29.系统环境变量窗口
操作:首先点击选中绿框中的“Path”项,然后再点击红框中的“编辑”按钮。
30.编辑 Path 环境变量
操作:点击红框中的“新建”按钮,将创建一个新的空白变量位置。
31.新建 MinGW-w64 的环境变量
操作:将 bin 文件夹地址,黏贴到红框中的输入框中。
32.添加 MinGW-w64 环境变量已完成
操作:点击红框中的“确定”按钮,MinGW-w64 的配置就完成了。
33.启动“命令提示符”
操作:右键点击开始按钮,在弹出的菜单中点击红框中的“命令提示符”项。
34.命令提示符
操作:输入“gcc -v” 并按回车键(Enter),将会显示 MinGW-w64 的组件列表。
35.MinGW-w64 安装完成
操作:从现在开始你就可以用 MinGW-w64 来编译 C程序 了。
五、使用 MinGW-w64 ****编译源代码
MinGW-w64 没有图形用户界面,它其实是一组命令行工具集,任何操作都只能通过在“命令提示符”中输入命令的形式来执行。对于编程来说,这种命令行工具尤其独特的优势,那就是不用双手离开键盘,即可完成所有操作。鼠标虽然使用简单方便,但效率仍然不及键盘。而且,给一个程序开发图形用户界面,是一件非常麻烦的事情,因为它是与平台紧密相关的,你要考虑各个平台的不同。
当然,世界上还是有很多拥有漂亮的图形用户界面的集成开发环境(IDE),其中的一些内置的编译器就是 MinGW-w64(GCC) ,例如:Code Lite、Code::Blocks 等。
A.编译命令 gcc
说明:“gcc”是 MinGW-w64 内置的编译命令,“hello.c”则是我们要编译的源代码文件的名字。
注意:首先,“gcc”命令与源代码的文件名之间有一个空格。其次,文件名必须完整正确,不能省略后缀名“.c”。
因为 MinGW-w64 本来就是将 GCC 移植到 Windows 上的产物,所以操作方式和 GCC 一样,只是在 Linux 下命令是被键入到“终端”中,而 Windows 下则是被键入到“命令提示符”里。
B.创建 hello.c 源代码文件
所以我们新建一个文本文件,名字可以任意取,我这里就将其命名为“hello”,现在文件的完整名字就是“hello.txt”了。之后我们只需要把“hello.txt”的后缀名“.txt”更改为“.c”后缀名,这样就得到了 C语言 源代码文件“hello.c”了。
C.编写 hello, world 源代码
这段代码是最基础的 hello, world 程序,会在屏幕上显示“hello, world”这段文字。相信这是学编程的大多数人,入门时的第一个程序,所以这里也就不再赘述了。
D.编译 hello.c 源代码
首先我们打开命令提示符,然后要将工作目录定位到源代码文件的存储位置,这一步非常重要,没有接触过命令行工具的人,往往会在这里出错。DOS 命令“cd”可以改变当前的工作目录,具体做法是“cd”命令后面加上目标工作目录,如上图第三行,就是重新定位到 E盘的 a 目录下。使用完“cd”命令后,还要再键入一次定位到的目录的地址,这样才会转移过去,但只需要键入盘符即可,并不需要键入完整地址,如上图第四行。工作目录重新定位后,如上图第五行所示,工作目录已经从 C:\Users\lenovo 更改为 E:\a 。
现在我们只需要执行“gcc hello.c”这行命令,就可以将源代码编译为可执行程序了。
E.编译后生成 a.exe 可执行程序
F.带 -o 参数的 gcc 命令
说明:“gcc”这个命令拥有很多内置选项,其中“-o”表示将它后面的单词设置编译后文件的名字。
注意:选项“o”是英文的小写字母,并不是数字零,并且它的后面只能是想设置的文件名。
这种在编译时命名的方法好像很鸡肋,初看好像只是帮我们省了一些时间,毕竟我们也可以在编译后手动改名。这种想法是因为我们的程序还很简单,只有一个源代码文件,也只会编译出一个程序。当以后我们的程序变复杂了,可能会在一个工作目录下编译出复数个程序,这时就必须用 -o 选项了,否则编译出的程序都叫 a.exe ,会在生成时互相覆盖掉。
G.编译 hello.c 成 hello.exe
H.编译后生成 hello.exe 可执行程序
I.双击运行 hello.exe
J.在命令提示符中运行 hello.exe
六、一些额外的设置
这些额外的设置,可以使 MinGW-w64 使用起来更方便。因为“gcc”命令有些麻烦,每次编译都要输入类似“gcc hello.c -o hello.exe”这样的一串字符,所以我们为了简化这一步骤,转而使用“make”命令。只是“make”是 Linux 和 类Unix 下的工具,所以在 MinGW-w64 中需要一些额外的修改。
1).创建 gcc.exe 的副本 cc.exe
2).创建 mingw32-make.exe 的副本 make.exe
3).使用 make 命令编译源代码
七、进阶
上述只是简单的编译源代码的方法,适用于单个或少量源代码文件,如果是复杂的大型程序,要用到 makefile 来组织源代码时,就需要 mingw32-make(修改后使用 make) 命令了。
如果程序编译或运行出错,需要调试源代码,则可以使用 gdb 命令,来帮助我们确定问题产生在哪里。
如果代码没有明显的编译错误,运行时也没有逻辑错误,则在最终编译为可发布版的程序时,我们还要考虑编译优化的问题,以便生成的程序文件拥有更小的体积,和更高的运行效率。gcc 命令有 -00 、 -01 、 -02 、 -03 这几个优化选项,其中 -00 是默认选项,意思是无优化,剩下的几个选项随数字的增大,优化程度也会逐渐增强。
八、问题列表
这里会列出一些可以预见的问题,并提供解决问题方法。
①.如果“自动安装程序”无法下载组件
操作:如上图所示。将第四章、第3节 SourceForge 中的 MinGW-w64 下载页面往下拉,就能看到这部分的页面。其中,红框内的链接,就是 MinGW-w64 的压缩包手动下载链接(6.3.0版),只需根据需要选择对应的链接下载即可。例如:x86_64-win32-seh ,x86_64 指 64位,win32 指可开发 Windows 程序,seh 指 异常处理模型。
将 MinGW-w64 压缩包下载到本地后,解压缩,然后就可以照常进行配置了。