barriers / 阅读 / 详情

cygwin和mingw的区别

2023-07-20 22:08:19
共1条回复
慧慧

Unix下编译通过的C代码,在win32下编译是不能通过的 ,当然Unix 和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下是相同的.但是,unix有自己一些独特的API(如fork,spawn,signals,select,sockets等),如果代码中使用了这些API,在win32下当然找不到对应的库.

但是,这些API的功能在win32中也能实现,也许你已经发现了一个能让window编译Unix风格代码的方法:

1.修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式--这就是mingw的做法.

2.修改库,让window提供一个类似unix提供的库,他们对程序的接口如同unix一样,而这些库,当然是由win32的API实现的--这就是cygwin的做法.

MinGW相比CygWin/gcc来讲,更加贴近win32。因为它几乎支持所有的Win32API。它所连接的程序,不需要任何第三方库即可运行。

CygWin/gcc,其实这是两个东西。CygWin是一个让Windows拥有Unix-like环境的软件。而gcc就是安装在CygWin上的编译器。

CygWin/gcc与MinGW的最大区别在于:使用CygWin/gcc可以在Windows下调用unix-like的API,(如fork,spawn,signals,select,sockets等)。也就是说Cygwin是运行在Windows下的,但是她使用的是Unix-like系统的函数和思想。由于这个区别,导致的结果就是用CygWin/gcc编译出来的程序可以无缝的运行在*nix环境下。但是如果调用了unix特有的API函数,在windows环境下不能正常运行,如果想在windows下正常运行的,就必须依赖cygwin1.dll,速度上会有些影响。

而用MinGW编译出来的程序,如果源代码里面调用了unix环境的API,则MinGW会把这些对UNIX的API调用翻译成win32下等价的形式。同时这个程序是不能在windows下运行的。

说白了,如果你是想在windows环境下开发linux运行程序,那么CygWin/gcc是你的不二之选。

而如果你想开发的是windows运行程序,并且追求速度,那么二者相比而言,MinGW是更好的选择

我没有用过这两个工具,只是有点想选择一个来用,于是在网上比较一下两者有啥不同,然后选一个适合自己的。过程中,我发现网上一份文章可能被多个人转载,被多个人稍微修改后当成自己的随笔写出,误认不浅。

说一点,什么cygwin编译的程序可以无缝在linux上运行,根本就不能这么理解。

cygwin官方的一个定义是Cygwin is not a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows.

翻译过来就是

cygwin不是让linux程序能在windows上运行的方法,如果你想要让linux程序能在windows运行,那么你只有用cygwin来重新编译一下源文件。

这句话完全反驳了无缝运行在linux的说法。就是说你在linux上编译的elf程序不能直接拿到cygwin上运行,同样,你用cygwin编译的程序也不是linux的elf格式,而是exe格式,exe是无法在linux上运行的。

cygwin和mingw都是为用户提供在windows操作系统使用GNU工具的方法,使得在windows上可以编译为linux写的c源代码并运行(让你可以用signal等linux才有的api)。真正的不同在于

1,cygwin大,mingw小

2,cygwin编译后的exe需要cygwin1.dll作为支持,而mingw不需要就可以直接运行,因为有中间层所以cygwin慢,mingw快。

3,cygwin包含的内容更全面,能编译通过的linux源文件更多,mingw的min是minimalist所以能编译通过的更少。但,不是全部,就是说别指望你可以把任何为linux写的源代码在cygwin或mingw编译通过并运行。

What Is Cygwin?

Cygwin is a Linux-like environment for Windows. It consists of two parts: A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing substantial Linux API functionality.

A collection of tools which provide Linux look and feel.

The Cygwin DLL currently works with all recent, commercially released x86 32 bit and 64 bit versions of Windows, with the exception of Windows CE.

Note that the official support for Windows 95, Windows 98, and Windows Me will be discontinued with the next major version (1.7.0) of Cygwin.

What Isn"t Cygwin?

Cygwin is not a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows.

Cygwin is not a way to magically make native Windows apps aware of UNIX ? functionality, like signals, ptys, etc. Again, you need to build your apps from source if you want to take advantage of Cygwin functionality.

MinGW: A collection of freely available and freely distributable Windows specific header files and import libraries combined with GNU toolsets that allow one to produce native Windows programs that do not rely on any 3rd-party C runtime DLLs.

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。

相关推荐

Windows系统中如何安装并配置MinGW

我们在Windows系统中运行C文件的前提是系统已经安装并配置了MinGW环境。那么该如何在Windows系统中安装并配置MinGW环境呢?下面我给大家分享一下。 工具/材料 MinGW安装包 01 首先我们需要登MinGW的官方平台,进入下载列表,找到Windows下的MinGW安装包进行下载,如下图所示 02 接下来点击下载好的MinGW安装包进入安装向导,点击底部的Install按钮,如下图所示 03 然后需要设置一下安装的位置以及是否生成快捷启动方式,如下图所示 04 接下来就跳转到安装管理器界面了,我们选择右侧第三个选项,右键单击选择Mark for Installation选项,如下图所示 05 然后点击左上角的Installation菜单,在下拉菜单中选择Apply Changes选项,如下图所示 06 接下来在弹出的界面中我们点击Apply按钮,如下图所示 07 接着MinGw相关的包以及程序就会进行下载以及安装了,如下图所示 08 然后当出现右上角的Successfully字样的时候则代表安装已经完成,如下图所示 09 接下来我们打开系统属性界面,点击底部的环境变量按钮,如下图所示 10 在环境变量界面中我们找到Path环境变量并双击它,如下图所示 11 然后我们在Path环境变量中将刚才安装的MinGW路径添加进去,如下图所示 12 最后打开CMD命令行,输入gcc -v命令查看mingw是否配置成功,如果出现如下图所示的信息则代表配置成功
2023-07-20 20:28:161

mingw该怎么卸载

直接删除那个文件夹就好了
2023-07-20 20:28:254

windows上如何卸载C语言编译器MinGW?

如果使用 Windows 自带的卸载程序不能够进行卸载的话,那么可以从互联网上下载、并安装一个超级兔子魔法设置软件进行卸载试试看,该应该软件不仅仅能够卸载各类软件,还可以清理系统注册表、以及清理磁盘临时文件等。
2023-07-20 20:28:572

MinGW是什么东西?它和QT是什么关系?怎么用MinGW

没什么关系。minGW是minimalist GNU for Windows. 最小化的windows环境下的GNU。用mingw跟用gcc没什么区别。
2023-07-20 20:29:162

MinGW的官网哪里看最新的版本是多少

http://www.mingw.org/http://sourceforge.net/projects/mingw/files/很久没更新了,如果想要看版本可以去下载链接直接看。
2023-07-20 20:29:241

MinGW、MSYS、Cygwin分别是什么意思?他们之间的关系是什么?

MinGW,即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC(GNU Compiler C)产生 Windows32 程序。 MSYS:Minimal GNU(POSIX)system on Windows,是一个小型的GNU环境,包括基本的bash,make等等。是Windows下最优秀的GNU环境。 cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件。 基本上Cygwin是提供了在windows上使用unix环境的套件不过开发程式的话编译出来的程式码是需要在Cygwin下才能正确执行虽然也是可以使用-mno-cygwin的flag MSYS & MinGW都包括了許多的子套件在里面首先MSYS是Minimal SYStem的缩写提供了类似Bourne shell环境下要编译程式的一些utility MSYS & MinGW都包括了许多的子套件在里头首先MSYS是Minimal SYStem的缩写提供了类似Bourne shell环境下要编译程式的一些utility像automake之类。 而MinGW則是Minimalistic GNU for Windows的缩写他包含了许多的compiler for windows、win32api等等是用來编译for windows的执行档用不像Cygwin编出來的程式必須在Cygwin下才能跑而MinGW则是Minimalistic GNU for Windows的缩写他包含了许多的compiler for windows、win32api等等是用来编译for windows的执行档用不像Cygwin编出来的程式必须在Cygwin下才能跑 因此可以看出因此可以看出
2023-07-20 20:29:371

minGW使用方法

MinGW最好和eclipse加CDT合起来使用。有个IDE界面肯定易上手些。
2023-07-20 20:29:452

Qt creator中的 minGW是什么

那是编绎器啊。 我了个去,你还特意百度一下说明让我看啊。你意思是说MinGW不是编绎器???请百度:MinGW 编绎器 虽然集合了GNU工具,但它还是说得上是编绎器啊。晕。
2023-07-20 20:29:522

为什么在Windows下开发 QT 要用到 MinGW? 他的作用是什么?

QT有windows版的。是。exe格式的,直接安装就可以的了
2023-07-20 20:30:003

怎么测试MinGW的安装

首先我们先来到这个网址下载MinGW的下载程序,百度搜索官网即可。下载之后安装一下(注意:这个安装并没有安装MinGW)安装完下载程序后,打开:点击Continue进行安装。选择列表中第三行右键选择:Mark for installation。然后选择installation栏目中的apply change。apply。如图:接下来是配置系统环境变量。a. 鼠标右击桌面“计算机”(WindowsXp是“我的电脑”)->“属性”  b. WindowsXP时,在新弹出的属性窗口,选择“高级”->“环境变量”。   Windows7时,在新弹出的属性窗口,选择左侧的“高级系统设置”,在新弹出的属性窗口,选择“高级”->“环境变量”。  c. 把MinGW安装目录的bin目录的路径追加到PATH里,然后确定。注意:箭头指的两个分号一定要加上并且分号一定要在英文输入模式下输入最后在CMD中输入gcc -v,看看有没有安装成功,如果出现一下画面说明安装成功
2023-07-20 20:30:091

如何安装MinGW软件

你可以直接在DOS界面下使用该编译器,如“gcc你的C文件所在目录”即可,当然前提是你要把minG32的bin目录设置到系统目录下。
2023-07-20 20:31:022

mingw能在linux上运行么

不需要呀,linux是自带gcc的不需要安装mingw
2023-07-20 20:31:112

怎么用mingw调试C++程序

把mingw文件夹的bin放入环境变量,编译连接可用gcc test.c,mingw是基于命令行的编译器,没有ide环境
2023-07-20 20:31:483

mingw安装完后该如何编译C语言?

应该是先安装MSYS,再安装mingw , 在mingw文件夹里面应该有个bin文件夹 ,留意一下该文件夹里面“应该”有gcc.exe的应用程序,假设该bin文件夹的全称路径是X:..mingwin,那么将它添加将它添加到环境变量里面。上面是配置环境,下面是编译运行一个C程序:在比如新建"D:main.c"文件,里面写main(){printf("Hello! ");},保存;然后打开cmd控制台,执行:gccD:main.c-oD:main.exe这个时候D盘会生成名为main的应用程序,控制台继续执行:D:main.exe就运行了,应该显示出Hello!了
2023-07-20 20:31:551

minGW与devC++

minGW是一款单纯的win32平台的gcc编译器,他只能用来编译已经写好的代码;而devC++是一款集成开发环境(类似与VC),它的编译器采用的是minGW。devC++除了包含minGW编译器之外,还有自己的源代码编辑器、调试器、标准C/C++函数库等等。
2023-07-20 20:32:061

用MinGW编译库问题,怎么解决

  mingw编译出来的静态库后缀名为.a,编译出来的动态库的导入库后缀名为.dll.a,而在windows下后缀名为.lib的库可能是静态库也可能是动态库的导入库。  mingw编译出来的动态库的导入库可以直接在vc中直接使用,例如  #pragma comment(lib, "libx264.dll.a")  这样你就不需要生成一个.lib后缀的动态库的导入库了,网上也有如何从.dll生成.lib的方法。  如果链接了动态库的导入库libpthread.dll.a,你发布的应用程序就要带上pthread的dll。  使用静态库的好处是发布的应用程序组件模块里不需要带上相关的dll,如果要使用mingw编译出来的静态库,可以如下:  #pragma comment(lib, "libx264.a")  但是仅仅链接这么一个静态库是不够的,你还需要链接  libgcc.a  libmingwex.a  你可能还需要链接libmsvcrt.a  否则会报一堆错误:error LNK2001: 无法解析的外部符号  上面的这些库在C:MinGWlib目录或子目录下面可以找到。  链接这些库的原因是mingw使用的gcc编译器和vc编译器之间存在差异
2023-07-20 20:32:161

MinGW到底怎么读

Dexterity comes by experience.
2023-07-20 20:32:252

mingw和gcc的关系?mingw具有gcc的全部核心编译功能吗

楼上估计没有做过"大型工程"吧.你有VC编译过2GB的源代码吗?那会是什么感觉啊!mingw就像VC一样是一个IDE,GCC就像MicroSoft Cl一样,是编译器,Mingw调用GCC来编译代码.当然和你直接用GCC编译一个效果.
2023-07-20 20:32:343

mingw怎么读

M I N G W
2023-07-20 20:32:411

如何把mingw安装在msys的根目录

安装前请先务必卸载其他版本的MinGW。1. 首先安装MinGW-w64。========== 安装方法 A ==========下载地址:http://sourceforge.net/projects/mingw-w64/?source=recommended而后启动该 .exe文件,开始安装。安装开始时,需要注意设置为如下图所示。安装目录设为 C:MinGW,这个目录是MinGW推荐的。由于是在线下载、安装,所以耗时大概为30分钟。安装完成后,需要将路径 C:MinGWmingw64in 添加到PATH环境变量中。此时启动cmd窗口,输入 gcc -v,则可以查看到gcc编译器的版本信息。备注:A. 不同于以往的MinGW安装包,该MinGW-w64只包含了MinGW编译器本身,而不包含MSYS等组件,因此在后续并不会弹出Windows 中OpenBlas 的安装 - Windows 32bit 适用 中所示的组件选择安装界面。MinGW-w64只是单纯的编译器安装包,这也是为什么本文中需要单独安装MSYS的原因。B. 由于后续MSYS可能调用make命令,而MinGW系列只提供了名字为 mingw32-make.exe 的执行文件(C:MinGWmingw64in 路径下),事实上,该.exe 和make.exe 功能一样,为了make执行时能找到该文件,建议复制 mingw32-make.exe 一份,并将复制文件命名为"make.exe"。========== 安装方法 B ==========方法A需要在线下载、安装,因此对网络有要求(我第二次用A方法安装MinGW遇到的问题就是:可以浏览网页并下载mingw-w64-install.exe,但后续的在线安装就出问题: Cannot download repository.txt [0],具体原因没有找到,只怪学校的网络管得太...)。通过如下链接:http://sourceforge.net/p/mingw-w64/mailman/message/32967954/直接下载合适配置的、已编译的MinGW64文件库,放到C:MinGW目录下,并同方法A一样进行后续处理。具体下载哪个版本,可以参考方法A中的setting,或者结合自己的需求。2. 安装 MSYS。下载地址: http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/ 在该下载页面中,应该下载的是下图中README.txt下面的压缩包文件,而非‘Download mingw-builds-install.exe"。下载后,解压缩,可看到文件内有msys文件夹,将msys文件夹整体移动到路径 C:MinGW 下。在msys文件夹内,会看到 msys.bat 文件,双击则启动MSYS,在MSYS中则可使用UNIX下的命令行,如make。备注:A. 在MSYS中,可用 "where make" 来查看可供调用的 make.exe 位置。
2023-07-20 20:32:491

请问windows中mingw做出的程序速度会比VC++和BCB慢很多吗?

会慢一点,因为封装了一层unix api。不会慢很多
2023-07-20 20:33:092

怎么在mingw环境下编译安装poco库

.vs编译安装的话,直接运行那些bat脚本就可以了,但MinGW肯定不行,所以需要用到MSYS2.解压poco-1.4.6p2,比如:D:/mysdk/poco-1.4.6p2,在MSYS的命令行中输入“cd /d/mysdk/poco-1.4.6p2”回车,就到了poco-1.4.6p2的解压目录了,具体你解压的目录路径可以根据实际情况修改;3.configure poco-1.4.6p2linux里面要配置编译参数,我们可以通过“./configure --help”查看有哪些编译项。我们要使用MinGW编译poco就必须在configure时指明是MinGW,我的configure命令如下(大家根据自己的实际情况修改):./configure --config=MinGW --shared --static --no-test --no-samples --omit=Crypto,NetSSL_OpenSSL,Data/ODBC,Data/MySQL简单解释:--config=MinGW表示我采用MinGW编译poco,--shared --static表示编译生成动态库(dll)和静态库(a),omit=...表示编译时不生成这些库,因为我本机没装ssl、mysql,odbc需要lib,会影响我编译,所以我去掉了这4个库;4.修改MinGW的编译脚本修改poco-1.4.6p2/bulid/config/MinGW,把“SYSLIBS = -L/usr/local/lib -L/usr/lib -liphlpapi -lws2_32 -lssl -lcrypto -lws2_32 -lgdi32”里去掉“-lssl -lcrypto”,因为我本机没装ssl,这个库没有,会影响编译安装;5.make编译执行了上面的./configure --config=......的命令后会生成一个config.make文件,然后输入“make”并回车,就开始编译安装poco了,poco编译过程会有一些提示错误,例如“poco-1.4.6p2/.../xxx.exe.exe:No such file”,如果是的话就不用管他,继续输入make回车,他会继续往下编译,大概经过N次这样的操作后,提示“make[1]:Nothing to be done for "all".”的时候就编译完了。编译完成后,在poco-1.4.6p2/lib/MinGW/ia32/目录下就是编译出来的静态度和动态库了。
2023-07-20 20:33:241

怎样在windows下用mingw编译librsvg

1、下载GMP源代码,展开到d:/gmphttp://gmplib.org/#DOWNLOAD2、下载MinGW windows下的GNU C编译器http://sourceforge.net/project/showfiles.php?group_id=2435中的AutoMated MinGW Installer下载完后执行,选择下载并安装安装选项选择第一,二和最后共三个组件,安装在d:/minGW3、 http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe?modtime=1079444447&big_mirror=1下载MSYS MinGW的辅助环境安装到d:/msys,安装时有两个提示,第一个提示输入Y, 第二个提示输入MinGW安装路径d:/MinGW完成后桌面出现msys快捷方式4、进入d:/msys/1.0/etc编辑fstab文件加入行d:/gmp /gmp5、点击msys进入环境cd /gmp进入gmp虚拟路径依次执行(每个都会执行很长时间)./configuremakemake install则编译出静态包如果执行./configure --disable-static --enable-sharedmakemake install则编译出dll
2023-07-20 20:33:311

qt-opensource-windows-x86-mingw530-5.7.0安装在win10 64位系统中需要添加什么文

1、安装Qt5Qt5的安装比Qt4的安装简单多了,我装的是Qt5.4(qt-opensource-windows-x86-mingw491_opengl-5.4.0.exe),它集成了MinGW、Qt Creator等,不需要你再单独下载MinGW和Qt Creator。首先,去Qt官网下载资源:qt-opensource-windows-x86-mingw491_opengl-5.4.0.exe;然后,双击安装即可。安装后,“开始”菜单2、配置Qt打开Qt Creator,工具–>选项,打开“选项”对话框若没有检测出,则添加相应的Qt版本和编译器(MinGW),再设置构建套件(Kits):设备类型、编译器(MinGW)、调试器、Qt版本3、使用Qt打开Qt Creator,新建项目–>其他项目–>空的qmake项目,项目命名为“QtTest”,再添加新文件main.cpp。在main.cpp中添加如下代码:#include<QApplication>#include<QVBoxLayout>#include<QLabel>#include<QPushButton>int main(int argc,char *argv[]){QApplication app(argc,argv);QWidget *window = new QWidget;window->setWindowTitle("QtTest");//QLabel *label= new QLabel("Hello Qt");QLabel *label = new QLabel("<h2><i>Hello</i>"" <font color = red>Qt</font><h2>");QPushButton *button=new QPushButton("Quit");QObject::connect(button,SIGNAL(clicked()),&app,SLOT(quit()));QVBoxLayout *layout=new QVBoxLayout;layout->addWidget(label);layout->addWidget(button);window->setLayout(layout);window->show();return app.exec();}此时,代码显示如下错误:运行时错误提示:#include<QApplication>–No such file……实际上,QT5中很多常用的QT头文件都被移到core gui widgets 等模块中去了,在QT5中,.pro文件需要增加额外的一行(注意大小写):QT += core gui widgets其中Qt += core gui widgets 表示链接QtCore(d).dll、QtGui(d).dll、QtWidgets(d).dll。我们在.pro文件中增加一行上述代码,保存,再双击打开.cpp文件,此时错误提示线消失,运行,结果
2023-07-20 20:33:451

Qt的 MinGw版本一直都不支持WebEngIne吗

从代码层面上来讲,mingw是可以编译WebEngine的.目前mingw-w64的实现完全可以编译绝大部分msvc能编译的东西,并且代码不需要多大的改动.真正的难度在于更改chromium的编译工具链,它涉及到无数的脚本,另外N多第三方库的编译方式也需要更改.这需要做大量工作.问题是当qt项目做了这些之后,如果上游的chromium不接受这些补丁,那么每次升级WebEngine都需要合并这些补丁,另外还要做额外的回归测试.还有一个原因就是下游的mingw在大型项目上表现不够稳定.
2023-07-20 20:33:522

VS与MinGW编译器有什么不同

vs倾向于依赖很多windows特有的库,mingw多数只依赖于msc运行库vs2013前对c++11支持的不好,mingw使用gcc/g++做编译器,对c++11支持的较好效率方面vs一般更快谢谢
2023-07-20 20:34:011

mingw-w64怎么切换目录

mingw想切换到D盘:cd d,然后敲回车即可。和window上的直接d:敲回车类似。
2023-07-20 20:34:104

UnixUtils,GnuWin32,MinGW,Cygwin哪个好

我用 mingw+gnuwin32 编译过 Emacs 和 ffmpeg. cygwin按说也不错,不过cygwin的gcc编译出来的 东西依赖于 cygwin.dll(好像是这个名字), 打包的话还得带上它。mingw就不需要。
2023-07-20 20:34:171

MinGW如何卸载?

你下载的是不带编译器的纯C::B集成环境。如果你的系统里有MinGW或Cygwin的编译器,可以自行配置指定路径;如果没有,那么最简单的解决方案是,卸载现有的C::B,下载codeblocks-13.12mingw-setup.exe或codeblocks-13.12mingw-setup-TDM-GCC-481.exe(这两个分别是带MinGW编译器或TDM GCC编译器的C::B版本),安装即可~
2023-07-20 20:34:251

cygwin和mingw的区别

Cygwin是几乎完全地模拟Linux上的POSIX调用接口,并移植了大部分程序/库。Mingw是把部分可以实现的POSIX接口通过转换为WindowsAPI,并移植了一部分程序/库。Cygwin开发出来的程序需要附带Cygwin1.dll等链接库才能在其他Windows上运行。Mingw可以直接在其他Windows上运行。Cygwin可以更容易地移植linux程序。Mingw运行的效率更高。
2023-07-20 20:34:321

VS与MinGW编译器有什么不同

MSVC不能跨平台MSVC比MinGW快两个编译器的区别,各自带的标准库的区别。
2023-07-20 20:34:592

minGW 环境变量怎么设置

在用户或者系统的PATH环境变量后面加入c:mingwin目录,也就是你的安装目录下的bin目录,这样你在命令行里面就可以使用gcc, g++等命令了。系统或者用户的PATH变量都可以,我个人建议使用用户PATH环境变量。在添加环境变量的对话框中,先看用户变量是否已经添加PATH变量,如果已经添加就选择编辑,并且把c:mingwin变量加在原有PATH变量之后,用;(分号)隔开就行了。如果还没有PATH变量,就直接添加就行了。 补充:你使用的MingW 5.1.6不是MingW的发布版本,而是他们的Automated Installer的版本。所以你可以参考最新的Automated Installer的官方安装文档。
2023-07-20 20:35:061

怎样查看MinGW的版本?

在控制台nbsp;gccnbsp;/hello.cnbsp;-onbsp;/hello.out,编译没错的话,就会在根目录出现一个hello.out的文件,然后nbsp;/hello.out,就可以看到结果了.nbsp;具体参阅GCC的用法nbsp;一.gcc历史nbsp;GCC最早是Richardnbsp;Stallman在十几年前编写的针对于C的编译器,意思即为GNUnbsp;Cnbsp;Compiler,后来发展支持Ada,C++,Java,Objectivenbsp;C,Pascal,COBOL,以及支持逻辑编程的Mercury语言,后来其英文原名变为:GNUnbsp;Compilernbsp;ollection([1]).除此之外,GCC对于各种硬件平台都提供了完善的支持。nbsp;一般的,GCC的编译功能包括gcc(C的编译器),g++(C++的编译器),在编译过程中,一共有四步工作。
2023-07-20 20:35:131

DEVC++的MINGW与TDM-GCC有什么区别

在下载链接中有三个下载选择,第一个codeblocks-1312-setup.exe是不带编译器和调试器的,第二个选择codeblocks-13.12mingw-setup.exe是带有TDM-GCC v4.7.1版本的,这个版本是一个稳定版本,codeblocks就是用它来编译的,
2023-07-20 20:35:211

Qt 如何生成可执行程序,用mingw32-make生成的缺少dll文件

你运行程序就会提示缺少dll,你记下名字,然后到qt安装文件夹下查找,然后将找到的复制到你的exe程序所在的文件夹中。然后就可以了。如果复制进去之后出问题了,就换一个查找到的dll(一般情况下,会查找到好多个)。
2023-07-20 20:35:282

mingw 下 怎么添加c++文件寻找头文件的目录

有的可以调用,有的不能调用,但是为了保持最大的兼容性,一些常规操作都是可以的,如:算点东西,打印出来,就是一些标准c的基本函数但是涉及到底层,比如驱动一台打印机打印东西,如果标准C中没有相关函数或者不兼容,就不能用了,相关的头文件可能在库文件的头文件中可以找到,但是都是简单定义,会将此类函数忽略,造成链接的时候,无法解析外部变量所以人们通常都是这样做,涉及底层就用windows的 API函数,而在Linux就用标准的函数,大部分多是UNIX上相似的一些函数
2023-07-20 20:35:393

Mingw 如何支持进程相关的函数。

编不过的。MinGW在这方面基本全部都Windows化,用的Windows API你如果要在Windows上编写这种调用Posix API的程序,用CygWin而不是MinGW
2023-07-20 20:35:461

关于MinGw 安装的问题

cygwin支持的unix工具多一些,比如在Windows下可以使用ls命令等。而mingw更注重的是编程工具方面上,你可以两个都装上自己看一下就知道了。
2023-07-20 20:35:544

怎么解决mingw64中文乱码问题

Windows使用的是GBK(这个算是历史遗留问题了,保证兼容性只能这样),而*nix系统,包括MSYS使用的是UTF-8。解决方法随便搜一下都可以找到的:MinGW安装及Msys配置(中文乱码以及输入中文问题)
2023-07-20 20:36:042

cygwin和mingw的区别

Unix下编译通过的C代码,在win32下编译是不能通过的 ,当然Unix 和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下是相同的.但是,unix有自己一些独特的API(如fork,spawn,signals,select,sockets等),如果代码中使用了这些API,在win32下当然找不到对应的库. 但是,这些API的功能在win32中也能实现,也许你已经发现了一个能让window编译Unix风格代码的方法: 1.修改编译器,让window下的编译器把诸如fork的调用翻译成等价的形式--这就是mingw的做法. 2.修改库,让window提供一个类似unix提供的库,他们对程序的接口如同unix一样,而这些库,当然是由win32的API实现的--这就是cygwin的做法.MinGW相比CygWin/gcc来讲,更加贴近win32。因为它几乎支持所有的Win32API。它所连接的程序,不需要任何第三方库即可运行。CygWin/gcc,其实这是两个东西。CygWin是一个让Windows拥有Unix-like环境的软件。而gcc就是安装在CygWin上的编译器。CygWin/gcc与MinGW的最大区别在于:使用CygWin/gcc可以在Windows下调用unix-like的API,(如fork,spawn,signals,select,sockets等)。也就是说Cygwin是运行在Windows下的,但是她使用的是Unix-like系统的函数和思想。由于这个区别,导致的结果就是用CygWin/gcc编译出来的程序可以无缝的运行在*nix环境下。但是如果调用了unix特有的API函数,在windows环境下不能正常运行,如果想在windows下正常运行的,就必须依赖cygwin1.dll,速度上会有些影响。而用MinGW编译出来的程序,如果源代码里面调用了unix环境的API,则MinGW会把这些对UNIX的API调用翻译成win32下等价的形式。同时这个程序是不能在windows下运行的。说白了,如果你是想在windows环境下开发Linux运行程序,那么CygWin/gcc是你的不二之选。而如果你想开发的是windows运行程序,并且追求速度,那么二者相比而言,MinGW是更好的选择我没有用过这两个工具,只是有点想选择一个来用,于是在网上比较一下两者有啥不同,然后选一个适合自己的。过程中,我发现网上一份文章可能被多个人转载,被多个人稍微修改后当成自己的随笔写出,误认不浅。说一点,什么cygwin编译的程序可以无缝在linux上运行,根本就不能这么理解。cygwin官方的一个定义是Cygwin is not a way to run native linux apps on Windows. You have to rebuild your application from source if you want it to run on Windows.翻译过来就是cygwin不是让linux程序能在windows上运行的方法,如果你想要让linux程序能在windows运行,那么你只有用cygwin来重新编译一下源文件。这句话完全反驳了无缝运行在linux的说法。就是说你在linux上编译的elf程序不能直接拿到cygwin上运行,同样,你用cygwin编译的程序也不是linux的elf格式,而是exe格式,exe是无法在linux上运行的。cygwin和mingw都是为用户提供在windows操作系统使用GNU工具的方法,使得在windows上可以编译为linux写的c源代码并运行(让你可以用signal等linux才有的api)。真正的不同在于1,cygwin大,mingw小2,cygwin编译后的exe需要cygwin1.dll作为支持,而mingw不需要就可以直接运行,因为有中间层所以cygwin慢,mingw快。3,cygwin包含的内容更全面,能编译通过的linux源文件更多,mingw的min是minimalist所以能编译通过的更少。但,不是全部,就是说别指望你可以把任何为linux写的源代码在cygwin或mingw编译通过并运行。在网上找的,不知道对不对
2023-07-20 20:36:121

怎么样才能删除mingw的文件?

1、首先找到mingw快捷方式,鼠标右键单击选择打开“属性”。2、然后在弹出来的窗口中点击打开快捷方式中的“打开文件位置”。3、然后在弹出来的窗口中点击返回到可以看到以“mingw”的文件夹。4、然后鼠标右键单击选择“删除”,就可以卸载了。
2023-07-20 20:36:301

利用MinGW如何实现linux软件移植至windows

实际上 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。
2023-07-20 20:37:031

mingw安装完后该如何编译C语言?

应该是先安装MSYS,再安装mingw , 在mingw文件夹里面应该有个bin文件夹 ,留意一下该文件夹里面“应该”有gcc.exe的应用程序,假设该bin文件夹的全称路径是X:..mingwin,那么将它添加将它添加到环境变量里面。上面是配置环境,下面是编译运行一个C程序:在比如新建"D:main.c"文件,里面写main(){ printf("Hello! "); },保存;然后打开cmd控制台,执行:gcc D:main.c -o D:main.exe这个时候D盘会生成名为main的应用程序,控制台继续执行:D:main.exe就运行了,应该显示出Hello!了
2023-07-20 20:37:121

Mingw 怎么编译java,文件?

同学,首先,你要知道什么是MinGW,MinGW,是Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。换句话说,是专门用来编译C语言的;如果想编译java,肯定要用java的编译器,(包含java Runtime,简称jre),java的编译器通常包含在JDK中,Java Development Kit,即java语言开发工具包。总结:MinGW无法编译java文件,MingGW是C语言的编译器;编译java文件,需要安装JDK。
2023-07-20 20:37:291

如何在vc中使用mingw编译出来的动态库和静态库

  mingw编译出来的静态库后缀名为.a,编译出来的动态库的导入库后缀名为.dll.a,而在windows下后缀名为.lib的库可能是静态库也可能是动态库的导入库。  mingw编译出来的动态库的导入库可以直接在vc中直接使用,例如  #pragma comment(lib, "libx264.dll.a")  这样你就不需要生成一个.lib后缀的动态库的导入库了,网上也有如何从.dll生成.lib的方法。  如果链接了动态库的导入库libpthread.dll.a,你发布的应用程序就要带上pthread的dll。  使用静态库的好处是发布的应用程序组件模块里不需要带上相关的dll,如果要使用mingw编译出来的静态库,可以如下:  #pragma comment(lib, "libx264.a")  但是仅仅链接这么一个静态库是不够的,你还需要链接  libgcc.a  libmingwex.a  你可能还需要链接libmsvcrt.a  否则会报一堆错误:error LNK2001: 无法解析的外部符号  上面的这些库在C:MinGWlib目录或子目录下面可以找到。  链接这些库的原因是mingw使用的gcc编译器和vc编译器之间存在差异
2023-07-20 20:37:371

MinGW 配置了lib / home / inclue,别人在cmd里输gcc -v 就可以我的死活不出来?

MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。  实际上 MinGW 并不是一个 单纯的C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如 gawk bison 等等)。  开发 MinGW 是为了那些不喜欢工作在 Linux(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 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) 源代码版本控制工具可以让世界上任何一个角落的人都可以参与到软件项目中来。2.下载MinGW一种方法是到Sourceforge(http://sourceforge.net/project/showfiles.php?group_id=2435)下载一个MinGW-2.0.0-3.exe。但是我配置的时候我电脑上安装了codeblocks,已经自带了MinGW。3.环境变量的配置在(系统属性-->高级-->环境变量-->系统变量 中)(以下目录都根据自己的电脑MinGW所在位置不同而改变)a.在PATH的值中加入“C:Program FilesMinGWStudioMinGWin”。这是寻找gcc编译器的路径。如果PATH中还有其他内容,需要用英文状态下分号进行分割b.新建LIBRARY_PATH变量,在其值中加入“C:Program FilesMinGWStudioMinGWlib”。这是标准库存放的路径。c.新建C_INCLUDE_PATH变量,在其值中加入“C:Program FilesMinGWStudioMinGWinclude”。这是Include查找头文件的路径。4.验证gcc是否正常运行在cmd控制台窗口下面,输入gcc -v。若已经成功安装好,会显示gcc的版本信息。
2023-07-20 20:37:441

MinGW、MSYS、Cygwin是什么概念,彼此之间是什么关系?

这好像windows的.dll/.exe等文件的库文件,库文件就是帮你实现了某些功能的库函数的封装,你可以在你的程序中调用这些函数,然后连接一下就可以了。由于linux与unix一样使用VFS文件系统,对文件格式没有特别的要求。所以用户可以有自己的一定的标准。例如,.rpm也可以是可执行文件。此外,我不知道你是编写shell命令程序还是其它软件程序。因为它们又微小的区别:1)当你编写shell程序在linux或unix下,是不能移植到windows下的。因为windows的shell程序是不能给用户自行编写的。虽然他们都是用c#编写,但封装方法不同。所以,用户也有不同的权限。虽然,把Cygwin/MinGw/MSYS装在windows也不能改变windows的内核和封装。也就是说,windows的底线是内核和某些程序。2)如果你要编写某些跨平台的软件,可以使用borland c++.但在编写过程中,不要调用该软件所在的系统的库或由该系统为基础生成的类。因为这样是实现不了软件的跨平台性的。最好的方法是自定义类。如果你的源代码已编写无误,想编写成windows环境下的库,利用borland c++的编译器。想编写成unix环境下的库,利用gcc编译器。
2023-07-20 20:37:542

使用mingw编程,如何操作mysql 数据库,最好有例程。

http://wenku.baidu.com/view/68dd062ca5e9856a561260e8.html 这是我自己写的 c++ 操作mysql应该符合你的要求.mingw 编译..应该要有编译选项
2023-07-20 20:38:031

MinGW怎样设置动态链接库的路径

  mingw编译出来的静态库后缀名为.a,编译出来的动态库的导入库后缀名为.dll.a,而在windows下后缀名为.lib的库可能是静态库也可能是动态库的导入库。  mingw编译出来的动态库的导入库可以直接在vc中直接使用,例如  #pragma comment(lib, "libx264.dll.a")  这样你就不需要生成一个.lib后缀的动态库的导入库了,网上也有如何从.dll生成.lib的方法。  如果链接了动态库的导入库libpthread.dll.a,你发布的应用程序就要带上pthread的dll。  使用静态库的好处是发布的应用程序组件模块里不需要带上相关的dll,如果要使用mingw编译出来的静态库,可以如下:  #pragma comment(lib, "libx264.a")  但是仅仅链接这么一个静态库是不够的,你还需要链接  libgcc.a  libmingwex.a  你可能还需要链接libmsvcrt.a  否则会报一堆错误:error LNK2001: 无法解析的外部符号  上面的这些库在C:MinGWlib目录或子目录下面可以找到。  链接这些库的原因是mingw使用的gcc编译器和vc编译器之间存在差异
2023-07-20 20:38:101

安装mingw后怎么编译c++

应该是先安装MSYS,再安装mingw,在mingw文件夹里面应该有个bin文件夹,留意一下该文件夹里面“应该”有gcc.exe的应用程序,假设该bin文件夹的全称路径是X:..mingwin,那么将它添加将它添加到环境变量里面。上面是配置环境,下面是编译运行一个C程序:在比如新建"D:main.c"文件,里面写main(){printf("Hello! ");},保存;然后打开cmd控制台,执行:gccD:main.c-oD:main.exe这个时候D盘会生成名为main的应用程序,控制台继续执行:D:main.exe就运行了,应该显示出Hello!了
2023-07-20 20:38:301