msys2是什么
Cygwin是运行于Windows平台的POSIX“子系统”,提供Windows下的类Unix环境,并提供将部分 Linux 应用“移植”到Windows平台的开发环境的一套软件。按照我经常开玩笑的话来讲,Cygwin 基本上就是传说中的 GNU/NT 系统(对照 GNU/Linux,GNU/BSD,GNU/HURD)。
MinGW,Minimalist GNU for Windows,用于开发原生(32位) Windows 应用的开发环境。它主要提供了针对 win32 应用的 GCC、GNU binutils 等工具,以及对等于 Windows SDK(的子集)的头文件和用于 MinGW 版本 linker 的库文件(so、a等,而不是 VC 的 lib)
MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境。同时它也是一个在Cygwin (POSIX 兼容性层) 和 MinGW-w64(从"MinGW-生成")基础上产生的,追求更好的互操作性的 Windows 软件;
MSYS2 是MSYS的一个升级版,是集成了pacman和Mingw-w64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。与MSYS最大的区别是移植了 Arch Linux的软件包管理系统 Pacman(其实是与Cygwin的区别)。就是说MSYS2是Cygwin的升级版本
它的一个优点就在于利用
pacman
包管理器,msys2可以使用pacman
来安装软件包,我们可以比较轻松的使用Linux包管理器的方式来安装一整套可以在Windows上运行的Linux工具。显而易见,你可以在Msys shell执行Linux相关命令
1 | //万能命令 |
重点:任何 Linux 的软件都可以用 --help 找到一些关键的使用资料,而且大多数的 --help 是支持子文档查询,例如上面加了 -S, 只看这个 -S 的相关文档
命令
安装完成后,有对应的各个Msys *
应用程序,这是指定相应的的shell
,比如你运行Msys mingw64
版本是安装gcc++,那么它们会被安装在msys\mingw64
,刚开始只要目录,下载就有文件了:
- 1,mingw32,MinGW 的32位环境的软件
- 2,mingw64,MinGW的64位环境的软件
- 3,ucrt64,微软的通用运行时环境,u 代表 universe(通用)。
- 4,clang32,clang 32位环境,clang 是一个编译器。
- 5,clang64,clang 64位环境
- 6,clangarm64,arm架构的CPU 的 clang 环境。
- 7,msys
你可以把上面的 7个 东西都理解成一个 子系统。mingw32 跟 mingw64 是比较常用的子系统。
其中
Msys2 MSYS
版本我们不做任何安装操作,一般只为同步更新软件库使用 #### 同步更新软件库 使用pacman -Syu同步更新软件库
1 pacman -Sys
搜索想要的软件包
pacman -Ss *
查询云端仓库是否有某个软件,他会返回一些了该软件不同版本列表,*
可为正则表达式字符串,指一个软件包名称。 1
2
3
4pacman -Ss *
如
pacman -Ss gcc
pacman -Ss gdb
查看云端软件的具体信息
1 | pacman -Si mingw-w64-x86_64-* |
查询一个软件是否安装
1 | pacman -Qs mingw-w64-x86_64-* |
查询本地已安装软件的具体信息
1 | pacman -Qi mingw-w64-x86_64-* |
查询本地已安装软件包所包含文件的列表
1 | pacman -Ql mingw-w64-x86_64-* |
删除一个软件
1 | pacman -R mingw-w64-x86_64-* |
安装gcc
1 | //安装64位 |
安装gdb
1 | pacman -S mingw-w64-x86_64-gdb |
packman 安装一个软件的过程就是下载 已经编译好的 静态库,动态库或者 exe,跟一些配置相关的文件,放在指定的位置。
查缺失的文件
pacman 还有一个 命令比较常用,就是支持查找当前软件包缺失的文件。比如不小心删除了SDL 的 SDL2.dll 文件,怎么知道哪个文件不见了,可以用以下命令。 1
pacman -Qk mingw-w64-x86_64-SDL2
pacman 通常会自动帮我们处理软件的依赖,但如果想看一下 软件的依赖,可以使用以下命令。 1
pactree mingw-w64-x86_64-SDL2
文章来源: msys2包管理介绍 初步使用msys2