如何将msys2安装到基础mingw目录中

tin*_*lyx 0 msys mingw-w64 msys2

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

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

现在,当我在MSYS2/MinGW64下使用MSYS2进行类似的操作时/c/mingw/msys64,二进制文件不再安装/c/mingw/bin了.例如,如果我clang按如下方式安装:

pacman -S mingw-w64-x86_64-clang
Run Code Online (Sandbox Code Playgroud)

二进制文件安装到:

/c/mingw/msys64/mingw64/bin/clang.exe
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Ray*_*lly 6

要说你有"另一个mingw64安装本身"是错误的思考方式.MSYS2是运行show的系统,你选择将它放在一个名为"C:/ mingw"的文件夹中,不会以任何方式使该文件夹成为mingw-w64系统,你只需要一个MSYS2系统生根在"C:/ mingw/msys64"

我担心MSYS2不允许在选择全局系统根目录(即您安装或解压缩MSYS2的文件夹)之外为其3个存储库中的任何一个选择根文件夹.主要原因是因为我们使用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技巧