各种Windows下面的gcc native build环境的比较

http://i.rexdf.org/blog/2015/04/04/fa-xian-ge-xin-huan-jing-msys2/

最近注意到了一个新的Windows上面的模拟Linux的项目。一般来说两大主流阵营MingWCygwin,这两个思路各不相同。相对来说 MingW性能比较好,尽可能用WinAPI替代实现。Cygwin则是添加了一个层,利用很多dll来模拟Linux的那些syscall(典型的如 fork)。所以cygwin程序一般都是需要有cygwin的dll在path里面才可以运行。MingW缺点是很多程序没法编译,如果没有专门为 MingW设计的程序,基本上MingW是编译不出来的。Cygwin缺点是会比较慢。

另外注意一下环境变量。MingW的环境变量path转换比较简陋很多情况下会有问题。cygwin环境下面有cygpath.exe这个工具来回转化(我就是用它hack了一下在cygwin的Mintty下面能运行调用nodejs处理博客压缩)。另外cygwin的path是Unicode的,偶尔会出现目录过深,windows资源管理器和rd /s 都删不掉的超长路径文件,rm -rf可以在Windows下面轻易删除。

msys本来是MingW的基本shell环境,从MingW项目没落之前很久就没更新过了。

msys2是完全不同的项目。下面会详细给出参考。在此之前我们来看看各种Windows下面的gcc native build环境的比较。

在此之前提醒一下,大部分MingW系列都是官网加SourceForge.net托管二进制的模式,所以有两个主要官网.

MinGW/msys 1.0:

MinGW的官网是http://www.mingw.org/

MingW里面自带一个msys 1.0,这个比较经典,但是太老了,如果需要gcc 3.4.4与GNU Make 3.81搭配。很多最近的github与svn checkout都会编译失败。基本上除了学习csapp以外没有任何其他用途(它与CSAPP里面例子编译结果一致)。如果要用/bin/gcc就是msys的的古董gcc,因为MinGW的PATH里面/mingw/bin/bin前面。

MingW

还算在更新从http://sourceforge.net/projects/mingw/上看最后一次更新是2014年12月。估计是某个包的补丁而已。

MinGW-w64

官网http://mingw-w64.yaxm.org,二进制文件官网http://sourceforge.net/projects/mingw-w64/

应该是MinGW的后续了。一个典型的下载目录是http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/seh/,这样的结构。理论上应该更新最好的,是从Linux版本的MinGW编译出的Windows版本。这个是目前正规血统的MinGW项目,虽然是构建Windows的exe和dll文件,但是它能力最大发挥在Linux平台上支持win7/8/8.1的API。被ffmpegGTK+OpenSSLwxWidgetsPerlphreadsKDE Software CollectionGIMPBlenderThe R Project for Statistical Computing等项目所使用。但是Windows版本各种bug吧。

MinGW-builds

被废弃的官网https://code.google.com/p/mingw-builds/.

二进制文件官网http://sourceforge.net/projects/mingwbuilds/.

似乎是俄罗斯人开发的,目前似乎停止开发了,已有的发行版gcc 4.6.2-4.8.1。一些feature如下(我也不懂直接复制了)。

OpenMP
LTO
Graphite
std Thread support library
std Atomic operations library
Native TLS Callbacks
Wide-Character Startup (-municode)
32-bit and 64-bit Windows
Multilib toolchains
Cross-compiling from x86_64 for i686 and vice versa

Win-builds

官网是http://win-builds.org/.

需要依附在MinGW或者Cygwin的shell环境下,Linux下也有一个版本。最新是4.8.3版本。

这个比较稳定,其集成了Qt, Curl, EFL, freetype, GTK+, lua, openssl, sqlite, wget, zlib…等等92个库。支持Windows和Linux,感觉如果是做开发,这个好像是个不错的选择。

tdm-gcc

官网是http://tdm-gcc.tdragon.net/.

这个还是比较个性和实用的选择。它默认选用的posix,这个可能会引起一些问题。但是wxWidgets官网推荐的编译器就是它,另外一部分人喜欢的Dev-CPP的后续开发版本orwelldevcpp也是用的它。可见其定制还是有一定合理性的。

更新较快最新已经更新到4.9.2了。

Cygwin

这个不用在这里多说,社区很活跃,发邮件很快就有人回复。软件更新也很频繁。这里说下mirror,除了163等。阿里也有mirror,http://mirrors.aliyun.com/,速度会比较快。但是注意,添加mirror有技巧。首先复制的目录应该是http://mirrors.aliyun.com/cygwin不能带最后的那个/,其次添加之后需要首先随手点击一下其他的,然后再点击刚刚添加的阿里才可以,手动换其他的源也是这样。

msys2

官网http://msys2.github.io 可能在目前github的一系列事件有关,国内没法直接打开.二进制文件官网http://sourceforge.net/projects/msys2/.

一个简介.

两个关键的github repo:

https://github.com/Alexpux/MSYS2-packages

https://github.com/Alexpux/MINGW-packages

如果想自己从源码编译可以用他的patch。实际上SourceForge.net上面的就是用他的patch编译出来的。

另外就是它采用了我最喜欢的ArchLinux的pacman -Syu。简直棒到不行。但是略微有点小问题就是需要rebase,还好它比cygwin自动化一些,直接执行根目录里面的autorebase.bat即可。

我发现他的github里面有很多在所有其他地方没见过的包,比如nodejs(nodejs官网的win版本在cygwin的shell下面会找不到正确的目录,直接拒绝执行,这会导致很多需要用nodejs的命令行项目无法编译以及使用)。

一个国内的二进制mirror: MSYS2 镜像使用帮助.

结束语

最后说一下国人据说很有前途的flinux的包管理也是基于pacman的,看来大家都是比较喜欢pacman的了。

时间: 2025-01-06 20:42:05

各种Windows下面的gcc native build环境的比较的相关文章

Windows下的 React Native 的环境搭建

感觉react好难QAQ 一.开发环境搭建要求 在Windows操作系统搭建React Native开发环境要求在电脑上安装好JDK,Android SDK,还要求电脑上安装有一套C++编译器,如果没有,推荐安装微软的VIsual Studio Community 2015 二.环境搭建 1.安装JDK(需安装1.8或更高版本) 下载对应你电脑版本的32位或64位JDK,第一次是JDK,第二次是jre,建议安装到同一个文件夹下的不同文件夹中.安装时可以修改安装目录. 2.JDK环境变量配置 (1

C++开发安卓、windows下搭建Android NDK开发环境

1. NDK(Native Development Kit) 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个工具,我们可以把用C/C++代码编译成可以直接运行在Android平台上的本地代码,这些本地代码以动态链接库( *.so )的形式存在,也正因为这样,我们可以通过复用这些动态链接库从而复用本地代码. 那么,通过NDK这个开发工具包,那么我们是否可以将一个APK完全使用C/C++来编写呢? 答案是不可

Windows下搭建objective C开发环境

最近打算针对iPhone.iPod touch和iPad开发一些应用,所以,需要开始学习Objective C(苹果推出的类似C语言的开发语言).由于苹果的自我封闭的产业链发展模式(从芯片.机器.开发语言.终端产品.服务)的限制,要想开发针对苹果 iPhone等产品的应用程序,就需要用Mac机器,在Xcode的IDE上使用Objective C语言开发.Mac机器就不用说了,那比PC机器要贵不少(当然性价比还是很高的),所以,要想廉价方式学习Objective C就必须要在Windows上能搭建

Windows下Eclipse + MinGW + Glade + GTK+环境搭建

本文主要介绍Windows下GTK+开发环境的搭建,通过在Eclipse中安装插件Pkg-config support for Eclipse CDT使开发灵活简便: 第一步:安装MinGW,安装Glade(不做赘述):第二步:下载gtk+-bundle_3.6.4-20130921_win32.zip并解压到某个目录下(如:E:\GUI\gtk),并根据gtk目录下的×××.README.txt文件配置PATH:第三步:下载eclipse-java-indigo-SR2-win32.zip(i

Windows下搭建go语言开发环境 以及 开发IDE (附下载链接)

1.下载 并且 安装 Go安装包 =========================================================== 在CSDN上传了我的版本,供大家下载: =========================================================== go1.2.windows-386.msi : http://download.csdn.net/detail/shuideyidi/7718563 go1.2.1.windows-am

windows下Sublime Text3 java开发环境的配置

windows下Sublime Text3 java开发环境的配置: 1.编写批处理脚本run.bat放在jdk的bin目录下,例如我的就放在"D:\Java\bin". runbat内容: ==========开始(本行不复制)========= @ECHO OFF   cd %~dp1   ECHO Compiling %~nx1.......   IF EXIST %~n1.class (   DEL %~n1.class   )   javac -encoding UTF-8 

学习C语言第一天:在windows下使用gcc的条件

在windows下使用gcc的条件1,必须是提前安装了gcc这个程序 2,在windows系统path的环境变量中,代表windows从哪里寻找程序和相关的库,path中不同的路径用";"分割 在PATH中添加:C:\Qt\Qt5.3.0\Tools\mingw482_32\bin\C:\Qt\Qt5.3.0\5.3\mingw482_32\bin 3,打开命令窗口,输入gcc -v,如果看到gcc版本提示代表gcc配置成功4,打开qt生成一个空的项目,编译后,如果在我的电脑中双击生成

Windows下的Objective-C集成开发环境(IDE)

Windows下的Objective-C集成开发环境(IDE) 分类: Objective-C2012-04-20 21:54 26631人阅读 评论(42) 收藏 举报 windowside编译器compilerlibrarysystem Objective-C是苹果软件的编程语言,想要上机学习.调试,有一个集成开发环境(IDE)方便很多.有三类方法搭建Objective-C的集成开发环境: 1)   使用苹果的平台,集成开发环境使用Xcode.但如果没有苹果平台,想在Windows环境下学习

Windows下的Python安装与环境变量的配置

Windows下的Python安装与环境变量的配置 第一步:python下载: Python安装包下载地址:http://www.python.org/ 第二步:python安装: 双击下载包,进入Python安装向导. 此处省略安装时的配图,下一步.下一步即可.但请要注意一点,请把python安装在C盘或D盘的根目录下,程序文件夹名改为python3,(如C:\python3\ 即可) 第三步: 检查安装是否成功: 方法一:双击运行python.exe文件,弹出如下窗口,表示安装成功: 方法二