如何安装 MinGW-w64 和 MSYS2?

Posted

技术标签:

【中文标题】如何安装 MinGW-w64 和 MSYS2?【英文标题】:How to install MinGW-w64 and MSYS2? 【发布时间】:2015-07-16 04:22:21 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

    从this page下载MSYS2。

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

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

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

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

    安装工具链

    a) 对于 64 位:

    pacman -S mingw-w64-x86_64-toolchain
    

    b) 对于 32 位:

    pacman -S mingw-w64-i686-toolchain
    

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

    安装您可能需要的任何库/工具。您可以通过以下方式搜索存储库

    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 等)使用不带前缀的软件包。

    通过以下方式验证编译器是否正常工作

    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):

    从开始菜单打开 MSYS2 shell 运行pacman -Sy pacman更新包数据库 重新打开shell,运行pacman -Syu更新包数据库和核心系统包 重新打开shell,运行pacman -Su更新其余部分 安装编译器: 对于 32 位目标,运行 pacman -S mingw-w64-i686-toolchain 对于 64 位目标,运行 pacman -S mingw-w64-x86_64-toolchain 选择安装哪个包,默认全部 你可能还需要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 开发一个包管理器,并且我正在使它成为跨平台的。

以上是关于如何安装 MinGW-w64 和 MSYS2?的主要内容,如果未能解决你的问题,请参考以下文章

Msys2+mingw-w64 编译VS2013使用的ffmpeg静态库注意事项

VS Code 安装与配置(使用MSYS2环境与mingw-w64 编译环境)

GLEW 未在 MSYS2 上定位 OpenGL 函数

msys2 找不到 mingw64

如何更改 MSYS2 上的 HOME 目录和启动目录?

Windows安装MSYS2_切换zsh_整合cmder