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的官方主页是:
你很容易找到下载的链接。下载文件是放在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文本编辑器。官方主页是:
不用怀疑,你可以很容易的下载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介绍与使用的更多相关文章
- MinGW 介绍
SDL新手教程(一):3.MinGW 下的安装与设置 作者:龙飞 3.1:MinGW 是什么? MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境.MinGW 收集了一系列免费 ...
- Windows系统结合MinGW搭建软件开发环境
MinGW介绍 MinGW,即Minimalist GNU For Windows,它包含了GNU工具集的运行环境.GCC编译器工具集以及其它的GNU程序开发工具(如make.gawk.grep等等) ...
- C语言学习第一天~Eclipse MinGW环境搭建
一.环境准备 windows 二.Windows环境下gcc编译器 1.MinGW介绍 MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist ...
- GCC学习(1)之MinGW使用
GCC学习(1)之MinGW使用 因为后续打算分享一些有关GCC的使用心得的文章,就把此篇当作一个小预热,依此来了解下使用GNU工具链(gcc.gdb.make等)在脱离IDE的情况下如何开发以及涉及 ...
- 关于windows 7 安装Vim的安装步骤介绍。——Arvin
在Ubuntu中第一次使用VIM编辑器发现好强大,打算在Win7中安装,其中遇到一些小问题,下边介绍详细的安装过程和遇到的问题. 1-安装 首先发现Github中有一款中意的作者,并且他开源的基本插件 ...
- Win7 64位 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6
书接上文,昨天装了MinGW,主要原因之一是要用到MSYS,所以顺手把FFMPEG又编译了一遍. 回到主题,其实我是想编译矢量库,因为最近要学习一些计算几何算法,所以找个方便的2D画图库就很重要. 说 ...
- Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解
http://hi.baidu.com/ltb6w/item/3a51f11926fda60ce75c361d Eclipse进行C/C++开发——Eclipse+CDT+MinGW的配置与使用详解 ...
- windows下安装mingw
windows环境下使用gcc MinGw是Minimal GNU on Windows的缩写,允许在GNU/linux和windows平台生成本地的windows程序而不需要第三方运行时库.本文主要 ...
- 在Windows/Ubuntu下安装OpenGL环境(GLUT/freeglut)与跨平台编译(mingw/g++)
GLUT/freeglut 是什么? OpenGL 和它们有什么关系? OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用.如果需要在程序里直接使用OpenGL, ...
随机推荐
- CSS中的repeat
Repeat-x是横向铺满,就是图片会横向重复,直到铺满. Repeat-y是纵向铺满,就是让图片纵向重复,直到铺满. 如果不想让重复,就直接为:no-repeat.
- JavaBean的一个小例子
一.创建一个javaBean类: UseBean package com.oncall24h.ruchi; import java.io.Serializable; public class UseB ...
- HTML5 总结-表单-表单元素
HTML5 表单元素 HTML5 的新的表单元素: HTML5 拥有若干涉及表单的元素和属性. 本章介绍以下新的表单元素: datalist keygen output 浏览器支持 Input typ ...
- PHP 时间和日期 总结
PHP 时间戳 UNIX 时间戳(timestamp)是 PHP 中关于时间日期一个很重要的概念,它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和. 可以使用time()函数来获取 ...
- 面向对象程序设计-C++ Stream & Template & Exception【第十五次上课笔记】
这是本门<面向对象程序设计>课最后一次上课,刚好上完了这本<Thinking in C++> :) 这节课首先讲了流 Stream 的概念 平时我们主要用的是(1)在屏幕上输入 ...
- c++ 实现将数字转换为中文数字输出
实现如下函数: void printInChinese(int num); 这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法. 例如: 17 -> 一十七 ...
- 字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian
1.字符编码.内码,顺带介绍汉字编码 字符必须编码后才能被计算机处理.计算机使用的缺省编码方式就是计算机的内码.早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB231 ...
- Internet Explorer 11(IE11)无法切换第三方输入法
Windows 8.1搭载了新的IE11版本,还发布了IE11 for Windows 7. IE11除了支持全尺寸Win设备以外,还比IE10更快速流畅,支持3D等高性能的浏览体验.全新F12开发者 ...
- HDU 4642 (13.08.25)
Fliping game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- 解析带有命名空间问题web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" ...