2008.12.23补记:我对mingw的了解确实不多,本文是我(liigo)“对mingw的初步印象和感性认识”(而非“对mingw的盖棺定论式的评价”),文中有错误之处在所难免,敬请批评指正;如果有读者受我误导,深表歉意。不想因为此文浪费某些读者的宝贵时间,特此说明。
这几天试用wxWidgets,分别用VC6和MinGW5编译通过,下面是一些记录。
MinGW:根据我的理解,它是一个Windows下的编译器(实际上是一系列开发工具)。与Windows下其它编译器不同的是,MinGW与Linux下广泛使用的GNU(基本上)完全兼容,这意味着,在Linux下如何编译源代码,在MinGW中也可以以完全相同的方式编译。
我个人以为,MinGW的出现是有原因的:有些Linux下的开发人员(比如开源阵营)发布的源代码通常只提供Linux下的编译方式,而不提供Windows下的编译方式(这可能与其不熟悉windows操作系统有关),但确实有不少用户需要在在Windows下编译使用此源代码。这在种情况下,如果Windows用户想用VC、BC等编译器编译该源代码,必须重写Makefile(各种编译器所支持的Makefile不尽相同),工作量比较大不说,还很难保证不出错。MinGW的出现,提供了两个平台下的“跨平台编译方案”。MinGW与MSYS相配合,连./configure都有了。与GNU不同的是,MinGW编译生成的是Windows下的可执行文件(.exe)或库文件(.dll,.lib)——不过编译过程中的的中间文件仍然是.o文件,而不是.obj文件(这当然无所谓了,中间文件嘛,编译完成后就没有用了)。MinGW好像是在Cygwin基础上发展而来的。顺便说一下Cygwin,它与MinGW在想法上基本是一致的,两者相比,Cygwin是重量级的(需下载50M以上直至数百兆不等,安装后占用空间可达1G),MinGW是轻量级的(需下载的文件只有20M,安装后70M左右),这是单纯从体积上说的,另外Cygwin现在据说也不是完全免费的了。
wxWidgets-2.6.2在Windows下的编译方式。用VC编译的话,有两种方式:VC工程,Makefile。前者就不用说了,用VC打开*.dsw文件,F7就可以了。这里说一下Makefile的编译方式,首先进入命令行窗口(cmd.exe 或 command.exe),切换路径到wxWidgets源代码所在目录下的 build/msw 子目录,执行“nmake -f makefile.vc”即可。用MinGW编译的话,基本上与前面类似,也是进入命令行窗口(cmd.exe 或 command.exe),切换路径到wxWidgets源代码所在目录下的 build/msw 子目录,只是执行的命令行是“mingw32-make -f makefile.gcc”。最终生成的库文件位于lib目录中。当然,编译之前可能需要设置一下,比如指定编译为动态库(DLL)还是静态库(LIB),或者是否采用UNICODE,等等,设置方式就是修改 build/msw 子目录中的 config.vc 或 config.gcc 文件。
VC6和MinGW相比,两者在编译速度,以及在编译后的文件的大小方面都有较大不同。根据我编译wxWidgets时所做的简单统计,VC6的编译速度比MinGW至少快一倍,VC6编译生成的动态库DLL文件比MinGW小一倍左右,VC6编译生成的静态库LIB文件比MinGW要大不少(大约是1.5倍)。下面的图片两者编译生成的文件大小的对比,左侧是VC6生成的,右侧是MinGW生成的,图一是编译生成动态库DLL的情况,图二是编译生成静态库LIB文件的情况:
总起来说,在Windows系统下,还是用VC编译比较合适,没办法的情况下才会选择MinGW。
分享到:
相关推荐
支持c++17 mingw-w64 Mingw-w64 is an advancement of the original mingw.org project, created to support the GCC compiler on Windows systems. It has forked it in 2007 in order to provide support for 64 ...
* Home Page * http://visual-mingw.sourceforge.net/<br>* * Mailing list * http://sourceforge.net/mail/?group_id=46778<br>* visual-mingw-general@lists.sourceforge.net * * License * ...
本资源MinGW64适用于32位(含gdb32)和64位操作系统,重要的是支持C++20标准。解决CodeBlocks等编程软件(注:含MinGW)各版本不能调试问题(只需替换),与时俱进,升级你的MinGW,你的编程软件功能会更加强大。
Symbolic C++ 3 MinGW下静态编译, 附带有大量的例子 官网:http://issc.uj.ac.za/symbolic/symbolic.html
c++编译器 mingw 64位 ,学习开发,一起学习........................
在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能,适合初学者与编程高手的不同需求,是学习C或C++的首选开发工具!多国语言版中包含简繁体中文...
使用setuptools和cython打包python程序的时候遇到:Microsoft visual c++ 14.0 is required问题解决办法-附件资源
MinGW 提供了一套简单方便的...MinGW是完全免费的自由软件,它在Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序员熟悉Linux下的C++工程组织提供了条件。
C++编译指令:g++ "folder\file.cpp" -o "folder\file.exe" -std=gnu++11 -g3 -I"MinGW64\include" -I"MinGW64\x86_64-w64-mingw32\include" -I"MinGW64\lib\gcc\x86_64-w64-mingw32\4.8.1\include" -I"\MinGW64\lib...
C/C++编译器 mingw64.zip MinGW-W64-builds-4.3.5
Dev-c++ windows gcc环境 minGW环境---Dev-c++ windows gcc环境 minGW环境---Dev-c++ windows gcc环境 minGW环境---Dev-c++ windows gcc环境 minGW环境---
C语言,C++中会用到的_mingw.h头文件。编写一些程序会用到
windows下C++开发环境MinGW 8.1.0
MinGW安装包 看我的博客如何vscode配置c/c++环境
GCC支持的语言大多在MinGW也受支持,其中涵盖C、C++、Objective-C、Fortran及Ada。对于C语言之外的语言,MinGW使用标准的GNU运行库,如C++使用GNU libstdc++。但是MinGW使用Windows中的C运行库。因此用MinGW开发的...
适用于Matlab/Simulink 2018b及以上版本,我在Matlab/Simulink 2020b成功安装。
c++ 简单开发环境设置,觉得对于自己很实用。 不敢独享,分开给大家!
为了考虑到程序兼容性,通常我们编译C/C++程序会编译32位和64位两个版本,像VisualStudio,devcpp这类集成开发环境确实不用自己设置就能做到,但是他们都有不方便的地方,如VisualStudio的占用空间太大,如果初学C/...
压缩包内附:软件安装包,安装教程和环境变量配置教程 解决问题: ...你可以安装免费提供的MinGW-w64C/C++编译器;有关更多选项,请访问 http://www.mathworks.com/support/compilers/R20116b/win64.html。
C++编译器-MinGW