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/

你很容易找到下载的链接。下载文件是放在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) 安装路径请选择一个容易找到的地方,默认的C:/MinGW 是不错的选择。

3.4:MinGW的简单使用。

打开“命令提示符”(console)窗口,我们可以简单的把目录转到比如 C:/MinGW/bin 这样的位置去工作。但是这显然不是一个好的方式,因为这样一定会把bin里面搞得很混乱。所以,我们在另外一个“干净”的地方,比如 D:/Project ,把这里设置成MinGW的工程工作区。这样,我们需要在系统的path里面添加能找到bin下面*.exe文件的路径,所以做一个批处理文件是最简单的方法。我的startg++.bat文件这样写的:

@set path=C:/mingw/bin;%PATH%;

@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/

不用怀疑,你可以很容易的下载Vim的安装程序,并且很容易的安装,不需要任何的“破解”-_-!!

因为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是程序员的咒语...)

#include <iostream>

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 <iostream>

#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可以看到文件的执行情况。

MinGW介绍与使用的更多相关文章

  1. MinGW 介绍

    SDL新手教程(一):3.MinGW 下的安装与设置 作者:龙飞 3.1:MinGW 是什么? MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境.MinGW 收集了一系列免费 ...

  2. Windows系统结合MinGW搭建软件开发环境

    MinGW介绍 MinGW,即Minimalist GNU For Windows,它包含了GNU工具集的运行环境.GCC编译器工具集以及其它的GNU程序开发工具(如make.gawk.grep等等) ...

  3. C语言学习第一天~Eclipse MinGW环境搭建

    一.环境准备 windows 二.Windows环境下gcc编译器 1.MinGW介绍         MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist ...

  4. GCC学习(1)之MinGW使用

    GCC学习(1)之MinGW使用 因为后续打算分享一些有关GCC的使用心得的文章,就把此篇当作一个小预热,依此来了解下使用GNU工具链(gcc.gdb.make等)在脱离IDE的情况下如何开发以及涉及 ...

  5. 关于windows 7 安装Vim的安装步骤介绍。——Arvin

    在Ubuntu中第一次使用VIM编辑器发现好强大,打算在Win7中安装,其中遇到一些小问题,下边介绍详细的安装过程和遇到的问题. 1-安装 首先发现Github中有一款中意的作者,并且他开源的基本插件 ...

  6. Win7 64位 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6

    书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...

  7. Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解

    http://hi.baidu.com/ltb6w/item/3a51f11926fda60ce75c361d Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解 ...

  8. windows下安装mingw

    windows环境下使用gcc MinGw是Minimal GNU on Windows的缩写,允许在GNU/linux和windows平台生成本地的windows程序而不需要第三方运行时库.本文主要 ...

  9. 在Windows/Ubuntu下安装OpenGL环境(GLUT/freeglut)与跨平台编译(mingw/g++)

    GLUT/freeglut 是什么? OpenGL 和它们有什么关系? OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用.如果需要在程序里直接使用OpenGL, ...

随机推荐

  1. iOS离线打包

    预备环境 iOS开发环境,Mac OS.XCode 7.2以上版本: 下载HBuilder离线打包iOS版SDK(5+ SDK下载). SDK目录说明 HBuilder-Hello:离线打包演示应用: ...

  2. 浅谈JDBC(一)

    一.JDBC技术引言 1.什么是JDBC技术 提供了一套接口规范,利用java代码进行数据库操作. 2.JDBC技术的核心思想 对于程序员来说,代码访问数据库分为三个步骤:1.通过数据库的账号密码.2 ...

  3. jsp中的jquery失效以及引入js失败的问题

    这段时间在试着看公司用的框架是怎么写的,看到项目中对jquery进一步封装的这一部分,所以自己试着写一些demo来模仿框架中的用法. 再一次的,又遇到了一个问题,jsp中引入js的问题,好久没有自己从 ...

  4. Nginx阅读笔记(三)之proxy_pass用法

    在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走,如果没有/,则会把匹配的路径部分也给代理走. 假设访问 ...

  5. 转: seajs手册与文档之 -- require规则

    require 规则 正确拼写 不要修改 使用直接量 动态依赖的小提示 书写规则 使用 SeaJS 书写模块代码时,需要遵循一些简单规则: 1. 正确拼写 在模块代码中,第一个参数 必须 命名为 re ...

  6. 让我们共同构筑物联网起飞的平台:物联网操作系统Hello China寻求应用合作伙伴

    经过几天的努力,终于把Hello China V1.76版的内核移植到基于Cortex-M3内核的STM32 chipset上.因为还希望进一步写一个USART驱动程序,因此详细的移植文档,预计一周之 ...

  7. cocos2dx进阶学习之CCSprite

    继承关系 CCSprite -> CCNodeRGBA       ->   CCNode, CCRGBAProtocol CCTextureProtocol 从继承关系可以看出,CCSp ...

  8. BZOJ 1652: [Usaco2006 Feb]Treats for the Cows

    题目 1652: [Usaco2006 Feb]Treats for the Cows Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 234  Solve ...

  9. java学习之IO对象流

    //注意对象类要打标记实现Serializable接口 package com.gh; import java.io.FileInputStream; import java.io.FileNotFo ...

  10. Lync 2010升级到Lync 2013POC计划-过程!

    最近在协助一家客户做升级项目调研,目前处在POC过程中,根据他们的需求我们将整个POC过程用Project 进行了下整理,了解整个项目中可能存在的风险和相应的计划过程,根据相应的计划我们能够将相应过程 ...