自由软件来生成纯粹的Win32可执行文件的编译环境

转载 2007年09月29日 09:42:00
mingw
MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。详情请参考<http://www.mingw.org>。

这里的“纯粹”是指「使用msvcrt.dll的应用程序」。无法使用MFC (Microsoft Foundation Classes)。

MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时库。

MinGW,即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。  
在基本层,MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时间库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的 Windows 95 发行版以上的 Windows OS 有效,使用基本运行时间,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时间扩展。该功能是 Windows32 API 不具备的。下一个组成部分是 w32api 包,它是一组可以使用 Windows32 API 的包含文件和端口库。与基本运行时间相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 Windows32 API 功能。  

MinGW 官方网站为 http://www.mingw.org
实际上 MinGW 并不是一个 C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。
开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人(比如我)提供一套符合 GNU 的 GNU 工作环境。
(此前的 cygwin 虽然也是 GNU 的 Windows 移植,但是 cygwin 是有版权的,而不是 GNU。)
所以,使用 MinGW 我们就可以像在 Linux 下一样使用 GNU 程序开发工具。

GCC 就是 MinGW 的核心所在,GCC 是一套支持众多计算机程序语言的编译系统,而且在语言标准的实现上是最接近于标准的。并且 GCC 几乎可以移植到目前所有可用的计算机平台。(我的电脑上就还装有 DevKitPro,里面包含 GCC 的 ARM(for GBA/DS/GP32) 和 MIPS(for PSP) 版本。)
GCC 本身不像 VC 那样拥有 IDE 界面(在 Windows 上也存在 Dev C++ 之类的支持 MinGW 编译器的 IDE)。源代码编辑你可以选用任何你喜欢的文本编辑器(据说微软的开发人员包括 VC 的开发都不用 VC 所带的 IDE 编辑器,而是选用 GNU 的 VIM 编辑器)。然后使用 make 等工具来进行软件项目的编译、链接、打包乃至发布。而像 cvs(svn) 源代码版本控制工具可以让世界上任何一个角落的人都可以参与到软件项目中来。

关于 MFC,微软基础库类,这个随 VC++ 携带的一个源代码公开的开发包,和其他 Windows 程序开发包是一样的。如果有 VC++ 的授权,你完全可以使用 MFC 的源代码,也就是你使用 GCC 来编译 MFC 程序是完全可以的。
当然,GNU 下也很多 Windows 程序开发包,甚至有一些是支持跨平台使用的。不仅仅可以直接把源代码编译为 Windows 程序,也可以不经修改编译为其他操作系统的图形程序。
不过 GNU 下,最流行的图形界面开发库是 GTK+。GTK+ 也能很好的运行在 Windows 平台(比如 GIMP 和 Gaim)。
总体说来,使用 MinGW 就是 GNU。
 

在linux下生成可执行文件和库文件

在linux下生成可执行文件和库文件   2012-04-06 10:27:22|  分类: c++|举报|字号 订阅 l         在 Li...
  • herorenme
  • herorenme
  • 2014年04月04日 15:53
  • 3420

gcc/g++编译 cpp/c文件 生成可执行文件

g++编辑cpp生成exe 编译重命名等: g++ –c Hello.cc  编译文件,生成目标文件 Hello.o g++ Hello.o –o abc  连接 并重命...
  • u013378306
  • u013378306
  • 2016年09月03日 19:07
  • 18606

用gcc编译成可执行程序

#gcc hello.c 该命令将hello.c直接生成最终二进制可执行程序a.out 这条命令隐含执行了(1)预处理、(2)汇编、(3)编译并(4)链接形成最终的二进制可执行程序。这里未指定输出...
  • baohuan_love
  • baohuan_love
  • 2013年11月07日 22:32
  • 4314

GCC编译链接到生成可执行

一、g C和C++编译器是集成的,编译一般分为四个步骤: 预处理(preprocessing) 编译(compilation) 汇编(assembly) 连接(linking) ...
  • u013639526
  • u013639526
  • 2014年11月19日 23:23
  • 848

makefile——编译所有.c文件为可执行文件

CFLAGS = -g -Wall -Werror LDFLAGS = -lpthread src = $(wildcard *.c) target = $(patsubst %.c, %, ${s...
  • bytxl
  • bytxl
  • 2014年08月16日 17:17
  • 3445

makefile 编译可执行文件

make makefile Unix
  • Visual_C_plus
  • Visual_C_plus
  • 2016年06月07日 16:40
  • 2300

怎样将写好的.py文件用cxfreeze生成exe可执行文件

python是个很强大的工具,但有一些不方便的地方(请允许我这样说)要编译成可执行文件得靠第三方插件,它本身的idle是无法完成的。目前主要有三种工具可以用:py2exe,pyinstaller,cx...
  • qq_35661436
  • qq_35661436
  • 2016年08月01日 10:44
  • 566

编译可在Android上运行的可执行文件:C/C++交叉编译环境

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://androidguy.blog.51cto.com/974126/1122861 ...
  • Pansing
  • Pansing
  • 2013年09月20日 01:13
  • 1483

经验总结---编译出可以在Android上执行的可执行文件

准备工具
  • u012303373
  • u012303373
  • 2014年07月11日 14:05
  • 668

GCC从源文件如何蜕变成可执行文件

GCC的编译过程 一、预处理: 对源程序中的伪指令(即以#开头的指令)和特殊符号进行处理的过程,即进行头文件的展开,宏替换,条件编译 如以下的一段简单程序: #include int main(...
  • zscfa
  • zscfa
  • 2016年07月06日 20:38
  • 475
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自由软件来生成纯粹的Win32可执行文件的编译环境
举报原因:
原因补充:

(最多只允许输入30个字)