环境要求
- 文本编辑器
- 写程序用的,可以用notepad,vi/vim,建议先不用IDE
- C++编译器
- 编写好的程序文件是源代码,人类可读的源。但机器并不认识,还要把源代码编译成机器语言,CPU才能按指定指令执行程序。
- C++编译器会把程序编译成可执行文件。最常用的免费的是GNU的编译器。
GNU 的 C/C++ 编译器
Cygwin 提供了一整套 可移植操作系统接口 (Portable Operating System Interface,缩写:POSIX)层。重视兼容性优于性能。开发的程序需要把依赖的 DLL 一起发布。
MinGW 是基于 Cygmin 开发的。重视性能优于兼容性,不需要提供兼容层,因为是直接调用 Windows API。一般开发用 MinGW (Minimalist GNU for Windows)就够了,但是 MinGW 只能在 windows 上编译32位程序,而且很久不更新,不支持较新的 Windows API。
推荐使用 MIinGW-w64,原来是 MinGW 的分支,后来发展成独立项目。不仅支持编译32位程序,也能编译64位程序,还能交叉编译-在32位系统上编译64位程序,64位系统上编译32位程序,而且一直在更新。
-
MinGW 异常机制
-
MinGW编译器在实现异常机制时,有三种可选方式:
- SJLJ (setjmp/longjmp):可用于32/64位,但不是零代价的:即使不抛出异常,仍会有一定的性能损失(在最差情形下~15%)。
- DWARF (DW2, dwarf-2):只能用于32位,没有永久的运行时开销,需要调用栈是dwarf-enabled,这意味着异常对于Windows system DLLs或Visual Studio编译的DLLs的异常不能被抛出。
- SEH:零花销。
-
总结:MinGW 就是开发 windows 应用的 GNU ToolChains(工具链,开发环境)
安装 MinGW-64
SourceForge.net上的MinGW-w64官方的下载站点 提供由MinGW-Builds等项目组制作的预编译版。编译器分64位版和32位版、分别包含sjlj、drawf、seh异常处理机制、分别支持POSIX线程模式或Win32线程模式。用户可根据需要下载不同版本。例如,64位的seh、POSIX线程的最新稳定版本的gcc包的下载目录为:Files --> Toolchains targetting Win64 --> Personal Builds --> mingw-builds-->8.1.0-->threads-posix-->seh --> MinGW-W64 Online Installer
-
在线安装
- 下载完成直接运行 mingw-w64-install.exe
-
选择版本号以及机器的架构为 x86_64,其他默认即可
-
选择安装目录
- 下一步可能出现异常:The file has been downloaded incorrectly!
- 貌似跟网络有关,在线下载安装包失败
-
离线安装指定版本安装包(时间很长,够喝两杯咖啡的)
-
然后选择版本号,thread,exception,跟在线安装器一样,就会找到如下文件
环境变量
- 安装完成配置环境变量,把 MinGW-64/bin目录到path中
测试
- 测试安装是否成功,命令行输入
gcc -v