【问题标题】:How to install MinGW-w64 and MSYS2?如何安装 MinGW-w64 和 MSYS2?
【发布时间】:2021-10-23 05:46:28
【问题描述】:

我正在尝试构建一些开源库。我需要包管理系统来轻松下载依赖项。起初我使用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 可以下载许多不同的包一样。

【问题讨论】:

    标签: cygwin mingw msys mingw-w64 msys2


    【解决方案1】:

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

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

    1. this page下载MSYS2。

    2. 安装完成后,点击开始菜单中MSYS2 64-bitMSYS2 32-bit(或安装目录中mingw64.exemingw32.exe)下新建的“MSYS2 Shell”选项。

      如果操作正确,终端提示符将分别显示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. 安装您可能需要的任何库/工具。您可以通过以下方式搜索存储库

      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

    【讨论】:

    • 谢谢。如何获取pacman 可以识别的包的规范名称?
    • 如果同时安装 32 位和 64 位工具链,它会起作用吗?
    • @Colonel 是的,它会将工具链(以及您安装的任何第三方库)安装在单独的目录(/mingw32 和 /mingw64)中。
    • 非常感谢@rubenvb。 msys2 wiki 让像我这样的菜鸟对如何执行这几个简单步骤感到困惑。
    • 使用pacman 安装mingw-w64 是一个很好的建议。我在尝试安装 mingw-w64 作为代理时遇到了同样的问题。首先安装 MSYS2,为代理设置环境变量,如 superuser.com/questions/713582/… 并按照您的回答完美运行。
    【解决方案2】:

    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. 选择安装哪个包,默认全部
    7. 你可能还需要make,运行pacman -S make

    【讨论】:

    • 如何安装特定的 MinGW-w64 版本,如 x86_64-6.2.0-release-posix-seh-rt_v5-rev1
    • 这是否意味着不再需要 here 中描述的 mingw 安装程序?我应该只安装 msys2?
    • 链接 Reference 已损坏
    • 关于为什么 msys2 shell 会在一秒钟后自行关闭的任何想法?
    • 如果你需要 cmake,你必须安装 pacman -S mingw-w64-x86_64-cmakeNOT cmake。正常的 cmake 将缺少 minGW 的生成器。
    【解决方案3】:

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

    【讨论】:

    • MSYS2 还支持每个安装(和多个安装)的多个工具链。 Winlibs 确实很容易使用,但缺少包管理器(即没有预构建的库)和类似 linux 的环境(无法使用 Autotools 构建东西)。
    • @HolyBlackCat 感谢您的见解。我实际上正在为 winlibs 开发一个包管理器,并且我正在使它成为跨平台的。
    猜你喜欢
    • 2020-06-19
    • 1970-01-01
    • 2016-07-14
    • 2020-05-29
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多