MinGW 介绍
作者:龙飞
3.1:MinGW 是什么?
MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同一时候整合了GNU( http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是全然免费的自由软件,它在Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序猿熟悉Linux下的C++工程组织提供了条件。
3.2:为什么使用MinGW?
由于我和非常多IT人士一样,不愿意吊死在$M这棵树上。且不说开源这个理念的伟大,仅仅就Windows的安全性也已经让人们非常不安心了。假设再深入一点从编敲代码来看,在C++标准尚不成熟时期产生的MFC今天看来基本上就是盖子大叔凭着个人(也许是$M公司^^)理解所使用的C++方言。在我们期盼C++0x时代到来之前,没有不论什么实际行动能比严格遵循C++的ISO标准更能表达我们对于C++这个伟大的哲学体系的尊重。从这个角度来说,遵循ISO标准的实现就是好的实现。所以,MinGW不会比VC差,况且,他既是开源软件家族中的一员,也是*nix平台下事实标准GCC的翻版。假设有一天我们開始使用Linux平台了,会由于今天透过MinGW所了解的GCC知识而受益。
3.3:MinGW 的下载和安装。
MinGW的官方主页是:
http://www.mingw.org/
你非常easy找到下载的链接。下载文件是放在sourceforge上的,这也表明MinGW本身也是个在开发中的项目。
http://sourceforge.net/project/showfiles.php?group_id=2435
下载页面上有非常多令人眼花缭乱的文件,不用害怕,由于这才是软件最真实的一面。当然,这个软件的提供者为普通使用者也提供了最为简单的下载和安装方式。你仅仅须要下载“MinGW自己主动下载和安装软件”(Package: Automated MinGW Installer; Release: MinGW-5.1.3)MinGW-5.1.3.exe就能够依据提示简单的安装了。而且,安装后的MinGW甚至能够通过这个文件来自己主动升级,非常的人性化。
安装时须要注意下面几个方面:
1) 建议选择Current版本号,Previous表示曾经的版本号;Candidate表示当前正在开发的版本号,可能正在測试中,还不是非常稳定。
2) 在选择安装模块的时候,依据我们的须要,仅仅须要选择下面三个:MinGW base tools, g++ compiler, MinGW Make。
3) 安装路径请选择一个easy找到的地方,默认的C:/MinGW 是不错的选择。
3.4:MinGW的简单使用。
打开“命令提示符”(console)窗体,我们能够简单的把文件夹转到比方 C:/MinGW/bin 这种位置去工作。可是这显然不是一个好的方式,由于这样一定会把bin里面搞得非常混乱。所以,我们在另外一个“干净”的地方,比方 D:/Project ,把这里设置成MinGW的project工作区。这样,我们须要在系统的path里面加入能找到bin以下*.exe文件的路径,所以做一个批处理文件是最简单的方法。我的startg++.bat文件这样写的:
@echo ---**欢迎使用MinGW(GCC)系统**---
@echo Update by lf426 ( E-mail: zbln426@163.com ) 2007-12-10
@cmd
然后,你能够建立一个该文件的快捷方式放在桌面上,再为这个快捷方式指定一个美丽的图标,nice!
接下来,我们须要建立一个cpp文件,用什么来写cpp呢?
3.4.1:(插播)Vim ??
这又是一个有着传统的“悠久”历史,非常好非常强大的,免费开源的,牛x文本编辑器。官方主页是:
http://www.vim.org/
不用怀疑,你能够非常easy的下载Vim的安装程序,而且非常easy的安装,不须要不论什么的“破解”-_-!!
由于Vim非常好非常强大,所以,太多的内容就留给包含我自己在内的大家自己去学了(我的逻辑Orz)。我们这里简单的仅仅须要了解例如以下几点:
1) 建立一个名为 abc.def 的文本文件,在console窗体下输入:
vim abc.def
你就进入了vim的编辑界面。
2) 按"i"键,就能够输入文本了。退回到编辑方式,按Esc,再进入插入方式,再按i,就这样...
3) vim在编辑方式下本来的光标移动是h, j, k, l,只是,上下左右箭头也是能够使用的。
4) 编辑完毕后,(编辑方式下)按Shift+Z两次,或者:wq就能够保存退出。使用:q!能够不保存强制退出。
3.4.2:MinGW的简单使用。(续)
继续刚才的话题,我们建立一个叫 hello.cpp 的文件(据说Hello World是程序猿的咒语...)
int main(int argc, char* argv[])
{
std::cout << "Hello World." << std::endl;
return 0;
}
我们能够简单的使用命令:g++ hello.cpp,与最传统的Unix系统下的C编译器一样,MinGW为我们生成了一个名为a的可运行文件,当然,在win32下,名字叫做a.exe。
能够使用參数 -o 来指定编译的可运行文件的名字:g++ -o hello.exe hello.cpp (或者也能够不写名exe,直接g++ -o hello hello.cpp 结果一样)。这样,得到的文件就是hello.exe。
能够使用參数 -c 来生成与源文件名称同样的目标文件:g++ -c hello.cpp ,得到的文件是hello.o 。
目标文件能够继续连接成可运行文件:g++ hello.o ,得到文件a.exe 。
多个源文件,目标文件和库文件都能够同一时候编译和连接。
3.5:获得MinGW下的SDL开发库。(Development Libraries)
下载页面:http://www.libsdl.org/download-1.2.php
下载:SDL-devel-1.2.13-mingw32.tar.gz (Mingw32)
3.6:为MinGW设置SDL库。
找到你在硬盘上安装MinGW的位置,相似:
C:/MinGW
打开include目录,在里面建立一个新目录,取名为SDL,打开这个新的目录:
C:/MinGW/include/SDL
然后,将SDL Development Libraries中include目录里面的文件所有复制到刚才建立起来的那个新目录中。
然后,回到MinGW的目录下,打开lib目录:
C:/MinGW/lib
将SDL Development Libraries中lib目录下的libSDL.dll.a, libSDL.la和libSDLmain.a三个文件复制到刚才的那个MinGW的lib目录下。
最后,把SDL Development Libraries中lib目录下的SDL.dll文件复制到
C:/WINDOWS/system32
下。当然,另外一个选择是将SDL.dll随时绑定到使用了SDL库编译的*.exe文件所在的目录中。这通常在公布你的程序的时候使用。
3.7:建立第一个SDL程序。
运行我们之前的那个startg++.bat 文件,打开console窗体,运行命令:vim main.cpp ,将下列代码写入并保存。
#include "SDL/SDL.h"
int main(int argc, char* argv[])
{
try {
if ( SDL_Init(SDL_INIT_EVERYTHING) == -1 )
throw "Could not initialize SDL!";
}
catch ( const char* s ) {
std::cerr << s << std::endl;
return -1;
}
std::cout << "SDL initialized./n";
SDL_Quit();
return 0;
}
运行g++命令:g++ -o MySDL.exe main.cpp -lmingw32 -lSDLmain -lSDL
參数 -l (小写的L)使库文件得以与源文件一起编译和连接。(简单的能够觉得-labc即连接了名称符合libabc.*的全部库文件)
最后说明的两个參数是:-mconsole 和 -mwindows
他们的效果是使可运行程序是带命令行控制窗体的或者是纯Windows窗体的,缺省情况下应该是带命令行控制窗体的。
运行mysdl.exe能够看到文件的运行情况。