
安装并集成mingw-w64编译套件
- 通过动手操作,理解编译器的基本概念及用途
- 下载并安装mingw-w64编译器套件,并编译器和调试器等命令集成到Code::Blocks
- 在Code::Blocks中新建项目,测试编译器集成是否正确
![]()
课前导言
安装并集成mingw-w64编译套件
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,而不是其它版本,比如以下列表中的前两项:
最初的 MinGW, 落选原因:更新较慢,对64位支持不力
以及Code::Blocks 17.12 提供自带的 TDM-GCC MinGW ,官网:http://tdm-gcc.tdragon.net/,落选原因:个人维护,某些方面相对激进
我们要的 "mingw-w64",官网:http://mingw-w64.org
2. 关于编译器的64位和32位之分
mingw-w64虽然名字上带有64字样,但这只是用来强调“我支持64位的”,事实上它提供两套编译套件:32位和64位。
这两三年来C++程序在商业上,采用64位已经大行其是,一些重要的库或工具,甚至开始只支持64位。不过基于以下考虑,书本及本视频课程采用32位编译环境。
《白话C++》写作时,考虑到一些读者还在使用32位的设备和操作系统;
64位的机器及其上操作系统(Windows)可以完美支持32位程序;
32位和62位环境对实际学习几无影响;
如果你就是想使用64位编译器,变化也不大,可按书上内容操作即可。
再解释一下Code::Blocks的位数版本和编译器、操作系统位数版本的关系。
如果你的电脑或操作系统是32位的,没得说,你只能使用 Code::Blocks 17.12 这个32位版本的IDE和32位的mingw编译器套件;
如果你的电脑或操作系统是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让程序全速运行并结束调试运行。