网站首页 > 物联资讯 > 技术分享

MinGW介绍与使用

2016-09-28 00:00:00 广州睿丰德信息科技有限公司 阅读
睿丰德科技 专注RFID识别技术和条码识别技术与管理软件的集成项目。质量追溯系统、MES系统、金蝶与条码系统对接、用友与条码系统对接

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

MinGW 是什么 - Anduony - Anduony的博客

        这又是一个有着传统的“悠久”历史,很好很强大的,免费开源的,牛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可以看到文件的执行情况。

RFID管理系统集成商 RFID中间件 条码系统中间层 物联网软件集成