如何安装 MinGW-w64 和 MSYS2?

How to install MinGW-w64 and MSYS2?

我正在尝试构建一些开源库。我需要包管理系统来轻松下载依赖项。一开始我用的是MinGW+MSYS。但是包含的包是有限的。有人告诉我使用 MinGW-w64 + MSYS2.

我从 here 下载了 mingw-w64-install。当运行时,报如下错误。如何解决?

顺便说一下,在 MinGW-w64 下载页面上,我看到了很多下载链接。甚至列出了 Cygwin。 CygwinMinGW-w64 有什么关系?

我目前的理解是,在MinGW+MSYS的时候,MSYS只是MinGW的一个很好的插件,而在MinGW-w64 + MSYS2的时候,MSYS2是独立的,MinGW-w64只是一组库它可以使用。就像Cygwin可以下载很多不同的包一样。

很遗憾,您使用的 MinGW-w64 安装程序有时会出现此问题。我自己不确定为什么会发生这种情况(我认为这与 Sourceforge URL 重定向或安装程序当前无法正确处理的任何内容有关)。

无论如何,如果您已经计划使用 MSYS2,则不需要该安装程序。

  1. this page 下载 MSYS2。

  2. 安装完成后,在“开始”菜单(或mingw64.exemingw32.exe在安装目录)。

    如果操作正确,终端提示将分别显示 MINGW64MINGW32,而不是 MSYS

  3. 使用 pacman -Syuu 更新 MSYS2。如果它在更新过程中自行关闭,请重新启动它并重复相同的命令以完成更新。

    您应该定期更新您的安装。

  4. 安装工具链

    a) 对于 64 位:

    pacman -S mingw-w64-x86_64-toolchain
    

    b) 对于 32 位:

    pacman -S mingw-w64-i686-toolchain
    

    这包括 GCC(编译器)、GDB(调试器)等。

  5. 安装您可能需要的任何 libraries/tools。您可以通过

    搜索存储库
    pacman -Ss name_of_something_i_want_to_install
    

    例如

    pacman -Ss gsl
    

    并使用

    安装
    pacman -S package_name_of_something_i_want_to_install
    

    例如

    pacman -S mingw-w64-x86_64-gsl
    

    从那时起,您的编译器将自动找到 GSL 库!

    确保您安装的任何编译器和库都具有此包前缀(mingw-w64-x86_64- 用于 64 位或 mingw-w64-i686- 用于 32 位)。只对杂项命令行实用程序(例如 grepsedmake 等)使用无前缀的包,除非您知道自己在做什么。

  6. 通过

    验证编译器是否正常工作
    gcc --version
    

如果您想在 MSYS2 环境之外使用工具链(带有已安装的库),您需要做的就是将 <MSYS2 root>/mingw64/bin<MSYS2 root>/mingw32/bin 添加到您的 PATH

MSYS好久没更新了,MSYS2比较活跃,大家可以去MSYS2下载,里面有mingwcygwin fork两个包

安装 MinGW-w64 工具链(Reference):

  1. 从开始菜单打开 MSYS2 shell
  2. 运行 pacman -Sy pacman 更新包数据库
  3. 重新打开shell、运行pacman -Syu更新包数据库和核心系统包
  4. 重新打开shell,运行pacman -Su更新其余
  5. 安装编译器:
    • 对于 32 位目标,运行 pacman -S mingw-w64-i686-toolchain
    • 对于 64 位目标,运行 pacman -S mingw-w64-x86_64-toolchain
  6. Select安装哪个包,默认全部
  7. 您可能还需要make、运行pacman -S make

您现在还可以从 https://winlibs.com/ 获取 MinGW-w64 的独立个人版本,无需安装 - 只需解压即可使用。这允许在同一系统上拥有多个工具链(例如,一个用于 Windows 32 位,另一个用于 Windows 64 位)。