msys2 找不到 mingw64

Posted

技术标签:

【中文标题】msys2 找不到 mingw64【英文标题】:msys2 doesn't find mingw64 【发布时间】:2017-05-31 03:34:00 【问题描述】:

我下载了:

https://mingw-w64.org/doku.php/download/mingw-builds

https://mingw-w64.org/doku.php/download/msys2

并将它们安装在C:/development/msys64 下。在这个文件夹下,我找到了 msys2.exe 和 mingw64 文件夹,其中又包含带有所有 mingw 可执行文件的 bin 一。

我将 C:/development/msys64/mingw64/bin 文件夹添加到 PATH 环境变量中。 事实上,我可以从 Windows 提示符调用 gcc - 例如。相反,在 msys2 shell 中我找不到它们。我的意思是,它们在/mingw64/bin,但它们在提示时不可用。

我确定我错过了一些步骤!

【问题讨论】:

我“修复”了添加到本地环境变量 PATH /mingw64/bin 并将 gcc.exe 复制到同一文件夹中的 cc.exe。 【参考方案1】:

MSYS2 有它自己的 GCC 工具链的软件包,您最好使用这些工具链而不是下载不同的工具链。例如,要使用 64 位 MinGW GCC,您必须运行 pacman -S x86_64-w64-mingw32-toolchain,然后确保使用“MinGW-w64 64 位 Shell”快捷方式(或类似的东西)启动 MSYS2,以便 @987654322 @ 在你的 PATH 上。

另外,MSYS2 不尊重您的系统或用户环境变量;它默认使用自己的 PATH。

【讨论】:

嗨,我遇到了同样的困惑。我先安装了MinGW-w64,然后安装了MSYS2,在msys安装目录中找到了mingw32和64的文件夹结构。然后我编辑了“/etc/fstab”,让msys找到了mingw。这样做可以吗?你猜我会怎么做?另外,我安装了 MSYS,因为 MinGW-w64 中没有 make 工具。 我不会编辑 fstab,我会使用可以通过 pacman 安装的官方 MSYS2 工具链,除非有充分的理由使用不同的工具链。【参考方案2】:

从MinGW-w32切换到MinGW-w64的方法

DownloadMinGW-w64的可执行文件参考EDIT

(未来版本的可执行文件链接可能会更改,这是针对版本 8.1.0,请在从该链接安装之前交叉验证最新版本)

安装过程(在设置中):
Version: PICK LATEST
Architecture: x86_64
Threads: posix
Exception: seh

如果有人尝试将 MinGW-w64 添加为 PATH 变量并且无法在 C:\msys64\mingw64\bin 中找到 gdb.exe,请尝试在程序文件中查找它

C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin

gdb.exe等文件都在这个目录下。


编辑:

在 VSCode 中对 launch.json 文件进行一些更改后,MinGW-w64 GDB 调试器开始报错,因为在不同的文件夹中有 2 个版本的 MinGW,即 MINGW 和 mingw64!

安装路径不能包含空格 (即“程序文件”中的空格),这将在以后产生冲突。

步骤:

1. 卸载 PC 中安装的所有 GCC 版本 - Cygwin、MSYS2(32 位)和 mingw64(64 位)并再次安装 MinGW-w64,这次使用MSYS2.

如果调试器出现错误并且版本冲突,请重新开始!

2. Download 此链接中的 MSYS2 安装程序。

安装过程很简单,按照网站上提到的步骤操作!

安装路径不得包含任何空格,这一点很重要。因此,我们无法在Program Files 中安装MinGW-w64。

3.安装完成后:打开MSYS2终端(pink icon)

使用以下方法更新包数据库和基础包:

pacman -Syu

在此之后,使用以下命令更新其余的基础包:

pacman -Su

4. 现在切换到 MSYS2 MinGW 64 位终端(blue icon)

为 C 和 C++ 安装 gcc 和 g++。

对于 64 位:

pacman -S mingw-w64-x86_64-gcc

安装调试器 (gdb)。

对于 64 位:

pacman -S mingw-w64-x86_64-gdb

5.现在你已经准备好了!

检查版本:

gcc --version
g++ --version
gdb --version

6.最后,删除旧的环境变量(如果有的话)并将新的环境变量添加到 PATH 中!

在 VSCode 中调试文件之前,请确保在构建时添加 -g 标签,否则调试器将忽略断点!

脚注: 将所有版本保存在一个文件夹中非常重要,如果文件夹不同,那么以后的生活就会变得艰难!

【讨论】:

如果gdb.exe 不在C:\msys64\mingw64\bin 中,则意味着您忘记安装它的包(mingw-w64-x86_64-gdb)。正如另一个答案所说,将 MSYS2 与其他 MinGW 发行版混合通常不会很好。 这对我有用!其他答案没有!从 .exe 文件安装时,gdb.exe 在 Program Files 而不是 C:\msys64\mingw64\bin 文件夹中创建。我找了大约一个小时,终于在程序文件中找到了它!现在,在将其设置为 PATH 变量后,我的 g++ 版本终于是 64 位的。我认为它将来可能会对某人有所帮助,这就是为什么我将其作为答案发布在这里。正如你所说,将 MYSY2 与其他 MinGW 发行版混合通常不会很好。感谢您的输入!我很感激!

以上是关于msys2 找不到 mingw64的主要内容,如果未能解决你的问题,请参考以下文章

MSYS2 MinGW 不包括 mingw-get 包管理器

update-core 后在 MSYS2 中找不到一些主要命令

GCC (MingW-w64) 找不到基础构造函数 (!?)

GHC 找不到适用于 mingw gcc(但不是 mingw-w64)的外部库(libjack.lib)

与mingw交叉编译时找不到zlib头文件?

在您的 Gemfile 中列出的或本机上可用的任何 gem 源中找不到 gem 'wdm (>= 0.1.0) x64-mingw32'