‹  返回课程

安装并集成mingw-w64编译套件

课文
阅读量:406
技术范畴
  1. 通过动手操作,理解编译器的基本概念及用途
  2. 下载并安装mingw-w64编译器套件,并编译器和调试器等命令集成到Code::Blocks
  3. 在Code::Blocks中新建项目,测试编译器集成是否正确
课前导言
非常重要的一课:理解编译器的基本作用。将来我们写C++代码时,表面上看是在和IDE打交道,实际都是在和编译器及调试器一边是朋友,一边是敌人……
安装并集成mingw-w64编译套件
下载、安装32位的mingw-w64编译器,并将它集成到Code::Blocks及系统环境下。


1. 关于mingw-w64

Code::Blocks是一款支持C++语言的集成开发环境(IDE,Integrated Development Environment )。至少需要集成:编辑器、编译器、调试器。上一节课我们安装了Code::Blocks,只有自带的编辑代码的功能,还无法将我们所写的代码,“转换”成可以直接在电脑上运行的程序。

我们使用的C++编译器,是跨平台的(Windows、UNIX、Linux、Mac-OS )的开源主流编译器GCC 。事实上它还被用于Android(本质为Linux平台)和苹果手机iOS操作系统(本质为UNIX),并且不仅仅支持C/C++,还支持Objective-C、Fortan、Java、Go等其它语言。

《白话C++》课程面向初学者,使用新手比较熟悉的Windows平台上学习,因此需要选择GCC在Windows上的迁移版本。mingw-w64并不是第一个Windows下的GCC迁移版本,但却是由GCC官方开发人员提供的版本,并且已经有广泛的应用;包括在《白话C++》下册所使用的2D游戏引擎libsdl,在Windows下也使用它来编译。因此我们必须使用mingw-w64,而不是其它版本,比如以下列表中的前两项:

2. 关于编译器的64位和32位之分

mingw-w64虽然名字上带有64字样,但这只是用来强调“我支持64位的”,事实上它提供两套编译套件:32位和64位。

这两三年来C++程序在商业上,采用64位已经大行其是,一些重要的库或工具,甚至开始只支持64位。不过基于以下考虑,书本及本视频课程采用32位编译环境。

  1. 《白话C++》写作时,考虑到一些读者还在使用32位的设备和操作系统;

  2. 64位的机器及其上操作系统(Windows)可以完美支持32位程序;

  3. 32位和62位环境对实际学习几无影响;

  4. 如果你就是想使用64位编译器,变化也不大,可按书上内容操作即可。

再解释一下Code::Blocks的位数版本和编译器、操作系统位数版本的关系。

  1. 如果你的电脑或操作系统是32位的,没得说,你只能使用 Code::Blocks 17.12 这个32位版本的IDE和32位的mingw编译器套件;

  2. 如果你的电脑或操作系统是64位的,你可以按上一节课程内容,将它升级到最新“Nightlies”构建版;而编译器套件,你可以使用 32位,也可以使用 64位,包括两套都下载,切换使用(参看书本内容)。

未来:未来属于64位系统和程序。未来本站多数《白话C++》之外的C++课程,如无特别强调,基本都是使用64位的编译器。因此我们建议还在使用32位系统的读者考虑升级到64位。

3. 在线安装太慢,怎么办?

有三个办法:

  • 一是“翻……”哈哈哈,你懂的;

  • 二是和我录视频一样,让它慢慢下载去,我看看网页,玩玩手机,后来还小睡了10多分钟……人生那么长……

  • 三是加入第2学堂QQ群(3.9.9.1.4.6.2.7),加入群后,下载对应的群文件(i686-8.1.0-release-posix-dwarf-rt_v6-rev0.7z),然后如视频课程所说,解压到指定目录下。该群重点为《白话C++》读者提供支持,所以有可能入群被拒。

4. 视频内容订正

32位的编译器如严格按书中所说,应安装在名为“mingw-w64-32bit”的目录下,录视频时已经是深夜,犯了糊涂……目录名字写成“mingw32-w64-32bit”了,后续视频课程也就将错就错,使用这个目录。大家在阅读书本和视频时,略微注意一下。

5. 关于修改mingw-w64的某个头文件

书中对应章节还提到修改mingw-w64套件中,和Windows图形界面编程有关的 “commctrl.h”文件的修改,以躲开后续编译“wxWidgets”的一个坑,这部分内容在视频课程中,被调整到下一节(编译wxWidgets)。

6. 为什么不需要启用“C++11”选项

因为视频教程中下载并安装的最新版GCC,已经支持并默认启用C++11新标准了。

7. 调试器安装正确了吗?

视频没有测试调试器是否在Code::Blocks中正确集成,那是因为它只需配置一个路径……通常不会出错。如果你不放心,那么可以使用Code::Blocks新建或打开之前的测试项目(“hello_world”),在代码编辑器中将输入光标挪到有“Hello world”的那一行,然后按F5,该行左边栏是否有一个红色的圆点出现?然后再下F8,如果程序运行并停在这一行,就表明调试器集成正确,最后可以按下F8让程序全速运行并结束调试运行。

课后导言
你的第一个“Hello world”程序,“写”出来,并且顺利通过编译了吗?