0

我想知道 MSYS2 中是否有办法指定基本 MinGW/MinGW64 目录?

在 MSYS(即 MSYS-1)中,安装 MSYS 后,它知道目录结构是,例如,,/c/mingw/msys/...如果您使用 安装 mingw 包mingw-get,则安装的二进制文件将转到/c/mingw/bin. 我认为这可能是因为/mingw在 default 中有 mount /etc/fsab

现在,当我在 MSYS2/MinGW64 下使用 MSYS2 at 执行类似操作时/c/mingw/msys64,不再安装二进制文件/c/mingw/bin。例如,如果我安装clang如下:

pacman -S mingw-w64-x86_64-clang

二进制文件安装到:

/c/mingw/msys64/mingw64/bin/clang.exe

好像MSYS2在自己内部创建另一个 mingw64 安装(使用 bin/lib/etc/share ...)。这让 MinGW64 感到困惑,因为它报告找不到 clang。我知道我可以添加另一个路径,但是在根目录下安装一个 MinGW 并在 MSYS2 的子文件夹中安装另一个是相当奇怪的。我怀疑这可能会导致未来工具链的不一致。

我的问题是,有没有办法让MSYS2安装 MinGW 包到 MinGW 目录树MSYS

谢谢

4

1 回答 1

6

说你有“另一个 mingw64 安装本身”是错误的思考方式。MSYS2 是运行该节目的系统,您选择将其放在名为“C:/mingw”的文件夹中不会以任何方式使该文件夹成为 mingw-w64 系统,您只是获得了一个 MSYS2 系统植根在“C:/mingw/msys64”

恐怕 MSYS2 不允许选择其 3 个存储库中的任何一个的根文件夹,而不是选择全局系统根目录(即您安装或解压缩 MSYS2 的文件夹)。主要原因是因为我们使用 pacman 作为我们的包管理器,而这个工具不存在,因为它是一个管理整个系统的工具,因此,所有 pacman 包都使用绝对文件夹压缩(相对于全局系统根)。

由于 MSYS2(通过 Cygwin;MSYS2 的核心归功于 Cygwin)提供了“/etc/fstab”,您可能会考虑使用它来使您能够将“/mingw{32,64}”放在其他地方,并且在一定程度上你可以侥幸逃脱,但我强烈建议你不要这样做,因为它只会导致问题。例如,希望能够使用“../”相对路径从“C:/msys64/mingw64”到“C:/msys64”的本地 Windows 程序将非常失望,我的意思是他们会不会崩溃。出于这个原因,我不会告诉你如何实现这样一个破碎的系统。

您应该尝试将您的 MSYS2 安装视为一个完整的子系统,我们已经在其中做出了一些决定(例如“/”、“/mingw32”和“/mingw64”文件夹的位置)您可以提高兼容性并删除一些会使问题更加频繁且难以诊断和修复的变量。

由于 Windows 260 MAXPATH 限制,我还建议将 MSYS2 安装到驱动器(任何驱动器)的根目录。我知道使用 UNC 路径的限制要远得多,但是大多数 MSYS2 和 Windows 软件不使用 UNC 路径,并且到处都有大小为 MAXPATH+1 的硬编码 C 字符串数组。这样做还可以帮助您将 MinGW-w64 存储库视为整个 MSYS2 系统的子存储库,而不是相反。

对于 pacman 参考,您应该使用这些页面:

pacman.conf(5) 手册页pacman 技巧

于 2014-07-17T00:12:25.397 回答