如何安装 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 也被列出。 Cygwin
和 MinGW-w64
是如何关联的?
我目前的理解是,在 MinGW+MSYS
时代,MSYS 只是 MinGW 的一个不错的插件,而在 MinGW-w64 + MSYS2
中,MSYS2 是独立的,而 MinGW-w64 只是一组可以使用的库。就像 Cygwin 可以下载许多不同的包一样。
【问题讨论】:
【参考方案1】:很遗憾,您使用的 MinGW-w64 安装程序有时会出现此问题。我自己不确定为什么会发生这种情况(我认为这与 Sourceforge URL 重定向或安装程序当前无法正确处理的任何事情有关)。
无论如何,如果您已经计划使用 MSYS2,则不需要该安装程序。
从this page下载MSYS2。
安装完成后,点击开始菜单中MSYS2 64-bit
或MSYS2 32-bit
(或安装目录中mingw64.exe
或mingw32.exe
)下新建的“MSYS2 Shell”选项。
如果操作正确,终端提示符将分别显示MINGW64
或MINGW32
,而不是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 位)。除非您知道自己在做什么,否则只能对其他命令行实用程序(例如 grep
、sed
、make
等)使用不带前缀的软件包。
通过以下方式验证编译器是否正常工作
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下载,有mingw
和cygwin 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-cmake
和NOT 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静态库注意事项