# WindowsGCC
# Flag
- 第三方针对各种不同系统制作的GCC安装包 (opens new window)
- http://www.cygwin.com (opens new window)
- https://sourceware.org (opens new window)
C语言的编译器有很多种,不同的平台下有不同的编译器
- Windows 下常用的是微软开发的 Visual C++,它被集成在 Visual Studio 中,一般不单独使用;
- Linux 下常用的是 GUN 组织开发的 GCC,很多 Linux 发行版都自带 GCC;
- Mac 下常用的是 LLVM/Clang,它被集成在 Xcode 中(Xcode 以前集成的是 GCC,后来由于 GCC 的不配合才改为 LLVM/Clang,LLVM/Clang 的性能比 GCC 更加强大)。
Visual C++(简称 MSVC)是由微软开发的,只能用于 Windows 操作系统;GCC 和 LLVM Clang 除了可用于 Windows 操作系统之外,主要用于 Unix/Linux 操作系统。
# MinGW-w64
MinGW
的全称是:Minimalist GNU on Windows
。它实际上是将经典的开源C
语言编译器GCC
移植到了Windows
平台下, 并且包含了Win32API
,因此可以将源代码编译为可在Windows
中运行的可执行程序。 而且还可以使用一些Windows
不具备的,Linux
平台下的开发工具。一句话来概括:MinGW
就是GCC
的Windows
版本 。
MinGW-w64
与MinGW
的区别在于MinGW
只能编译生成32位
可执行程序,而MinGW-w64
则可以编译生成64位
或32位
可执行程序。 正因为如此,MinGW
现已被MinGW-w64
所取代,且MinGW
也早已停止了更新。
MinGW-w64
使用Windows
的C
语言运行库,因此编译出的程序不需要第三方DLL
,可以直接在Windows
下运行。
那些著名的开源
IDE
实际只是将MinGW-w64
封装了起来,使它拥有友好的图形化界面,简化了操作,但内部核心仍然是MinGW-w64
。
MinGW
一个自由开源的最小开发工具集:mingw-gcc
编译工具链、mingw
软件包管理器(mingw-get
),用于开发Windows
原生程序。 第一版的mingw-gcc
是利用早期的Cygwin
套件编译而成,这个过程和Cygwin
系列(二):初窥Cygwin
背后中Cygwin DLL
构建类似, 随后mingw-binutils
、mingw-make
等其他工具链也都逐渐移植成功,MinGW
逐渐完全脱离了Cygwin
。
2005
年,MinGW-w64
项目基于MinGW
创建,改善了MinGW
的相关缺陷,并既支持32位
程序又支持64位
程序。MinGW-w64
项目开发活跃,被很多Linux
发行版采用为交叉工具链,而MinGW
事实上已被抛弃。
可以把
MinGW
视为MS Visual C++/Studio
的开源替代品
# MinGW-w64下载
首先看到的是源码,要把页面滚动到最底部才能看到编译好的在线安装程序和离线压缩包
推荐离线安装,在线安装其实也是下载压缩包,而且众所周知的原因,国内通过在线安装非常缓慢
环境说明
- 系统架构
x86_64
为64位
操作系统i686
为32位
操作系统
- 操作系统接口协议(为哪种操作系统开发程序)
posix
为Linux
、Unix
、Mac OS
等其他操作系统win32
为Windows
操作系统
- 异常处理模型(64位)
seh
是新发明的,性能比较好,但不支持32位
操作系统sjlj
是古老的,稳定性好,支持32位
操作系统
- 异常处理模型(32位)
dwarf
性能要优于sjlj
,不支持64位
操作系统sjlj
稳定性好,支持32位
操作系统
# MinGW-w64安装
- 如操作系统是
Windows10-X64
并为posix
接口协议开发程序,则选择:x86_64-posix-seh
- 下载后把压缩包解压到指定盘符下,再添加到系统环境变量
path
- 如解压目录
C:\Program Files\mingw64
,则在CMD执行
setx /m Path "%PATH%;C:\Program Files\mingw64\bin"
:: 查看添加变量是否成功
echo %PATH%
set PATH
查看版本
gcc -v && g++ -v
# MSYS2
MSYS
是用于辅助Windows
版MinGW
进行命令行开发的配套软件包,提供了部分Unix
工具以使得MinGW
的工具使用起来方便一些。 如果不喜欢庞大的Cygwin
,而且使用不多,可以试试。不过喜欢完整体验、不在乎磁盘占用等等,还是推荐Cygwin
而不是MSYS
。
MSYS
和MinGW
两者有较大的独立性。MSYS
是Minimal SYStem
的缩写,是一个基于Bourne Shell
的命令行系统, 用于替代Windows
中的cmd.exe
,提供一个像Linux/UNIX
的命令行环境。
MSYS
是基于Cygwin
早期版本(v1.3
)发展而来,包含了少部分Linux/UNIX
程序,没有编译工具链, 而且与Linux/UNIX
原生程序或Cygwin
程序相较丢失了很多功能特性,运行依赖于POSIX
兼容层(msys-1.0.dll
)。
如果没有
MSYS
,在cmd
中也可以正常运行MinGW
程序,但MinGW
和MSYS
配合起来, 就组成了一个类似Linux/UNIX
的、包含常用程序和完整开发工具的轻量但完备的系统环境,MinGW
的安装路径可以挂载到MSYS
目录树中任何位置。
MSYS
项目仅支持32位
程序,项目本身也发展缓慢。MSYS2
基于最新版的Cygwin
而创建,完全独立于MSYS
而重写的版本 ,并既支持32位
程序又支持64位
程序,POSIX
兼容层为msys-2.0.dll
。MSYS2
由msys2
、mingw32
、mingw64
三个子系统组成,mingw32
、mingw64
对应于mingw-w64
的32位
和64位
版本。 还有一个特色就是,MSYS2
移植了Arch Linux
中的包管理器pacman
MSYS2
不完全是基于MinGW
的,至少其原生工具都是链接到自带的一套特定版本的Cygwin DLL
的。 基本上只是用libalpm
管理MSYS2
、MinGW-w64
和MinGW
三个不同子系统的软件包
- http://www.msys2.org (opens new window)
- https://github.com/msys2 (opens new window)
- msys2配置记录 (opens new window)
- 清华大学MSYS2镜像 (opens new window)
- 中国科学技术大学MSYS2镜像 (opens new window)
# MSYS2命令
pacman -S <packge-name>
安装软件pacman -S mingw-w64-x86_64-make mingw-w64-x86_64-gcc
pacman -U <gz-file>
安装本地包,其扩展名为pkg.tar.gz
pacman -Syu
同步Msys2
源,并更新pacman -Sy
仅同步源pacman -Su
更新系统pacman -Sy <packge-name>
同步源后再安装软件pacman -R <packge-name>
该命令将只删除包,不包含该包的依赖。pacman -Rs <packge-name>
在删除包的同时,也将删除其依赖。pacman -Rd <packge-name>
在删除包时不检查依赖。pacman -Ss <keywords>
这将搜索含关键字的包。pacman -Qi <packge-name>
查看有关包的信息。
← Go