用MSYS2安装mingw

文章目录

  • 前言
  • 卸载mingw
  • 安装MSYS2

前言

安装MSYS2的原因是,在windows安装protobuf时,想用mingw编译protobuf的库,而protobuf的官方手册只给出一句:

To build from source using Cygwin or MinGW, follow the Unix installation instructions, above.

这就非常尴尬,因为我不知道利用mingw来运行unix的命令。翻看了比较多的博客,stackoverflow一篇帖子刚好有解决方案,How to build Google’s protobuf in Windows using MinGW?,帖子上用的是MSYS,而由于Mingw和MSYS万年不更新,很多Cygwin新特性都没有。所以诞生了MSYS2项目,我们常用的git for windows就使用了MSYS2项目。
MSYS2不同于WSL这种提供环境,用来在windows上编译linux软件,而是用linux的指令编译原生的windows程序(native)。
这篇博客主要记录一下安装MSYS2的过程。

卸载mingw

由于我已经安装了Mingw,我不希望我有两个mingw,所以需要卸载原有的mingw,卸载方式很简单,把mingw的安装目录删除掉,并删掉设置的环境变量就行。

mingw的安装包安装mingw时有MSYS的选项(不是MSYS2)。
有两种方式得到这个Unix的命令行工具,一种是通过mingw安装包来安装msys,第二种是通过MSYS2来安装mingw。

安装MSYS2

  1. 访问MSYS2官网,下载官网首页的安装包。
  2. 安装完成以后,执行下面命令,建议执行两遍,第一遍执行完会自动退出。
    或者第一遍执行pacman -Sy,第二遍执行pacman -Su

pacman 是Arch Linux 的包管理器,类似于ubuntu的apt,详细参考 pacman命令介绍。
-S是主命令,安装安装的包的作用,后面的是子命令。
-u, --sysupgrade 升级所有已安装的软件包
-y, --refresh 从服务器下载新的软件包数据库

pacman -Syu
  1. 安装需要用到的包
    利用-S命令安装所需要的包,像base-devel和mingw-w64-x86_64-toolchain都是一类包,我们可以通过序号选择。
pacman -S base-devel
pacman -S mingw-w64-x86_64-toolchain

base-devel 建议选的包是 autoconf、autogen、automake1.16、libtool、make、pkgconf等,按需选择。
输入命令序号用空格隔开即可

Enter a selection (default=all): 2 4 12 33 37 43 

用MSYS2安装mingw_第1张图片
mingw-w64-x86_64-toolchain只编译C++,没有什么fortran、objc和ada语言的需求的话,选择mingw-w64-x86_64-gcc 、mingw-w64-x86_64-gdb、mingw-w64-x86_64-make、mingw-w64-x86_64-pkgconf
用MSYS2安装mingw_第2张图片
安装完成后,我们可以看到开始菜单有4个MSYS2的快捷方式。在这里插入图片描述
这里MSYS很好的将各个编译环境隔离开,想用那个环境编译就得用对应的exe。比如想用MinGW64来编译,就必须得打开MSYSY2 MinGW 64-bit,在这个界面里make,否则会提醒没有gcc。

MSYSY2 MSYS 用来管理和安装包的
MSYSY2 MinGW 32-bit 编译32位程序,库链接到msvcrt上
MSYSY2 MinGW 64-bit 编译64位程序,库链接到msvcrt上
MSYSY2 MSYS UCRT 64-bit 编译64位程序,库链接到ucrt上

ps:ucrt,全称Universal C Runtime,通用C运行时库。
msvcrt,全称Microsoft Visual C Runtime Library,其实他和ucrt是一个东西。提供了print,malloc等基本C语言库函数的实现,只是ucrt比较新,win10版本以后作为系统组件。
知乎:msys2 mingw64、ucrt64、clang64的区别

你可能感兴趣的:(msys2,windows,linux,ubuntu)