我想知道MSYS2中是否有办法指定基本的MinGW / MinGW64目录?
在MSYS(即MSYS-1)中,在安装MSYS之后,它知道目录结构是,例如/c/mingw/msys/...
,如果使用mingw-get
安装mingw包,则安装的二进制文件转到/c/mingw/bin
。我想这可能是因为默认/mingw
中有/etc/fsab
次安装。
现在,当我在MSYS2 / MinGW64下使用MSYS2在/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
像使用MSYS
一样将MinGW软件包安装到MinGW目录树中?
由于
答案 0 :(得分:6)
要说你自己有另外一个mingw64安装"这是错误的思考方式。 MSYS2是运行该节目的系统,您选择将其放在名为" C:/ mingw"的文件夹中。不会以任何方式使该文件夹成为mingw-w64系统,您只需要一个根据" C:/ mingw / msys64"
的MSYS2系统我担心MSYS2在选择全局系统根目录(即您安装或解压缩MSYS2的文件夹)之外,不允许为其3个存储库中的任何一个选择根文件夹。造成这种情况的主要原因是因为我们使用pacman作为我们的软件包管理器,因为它是管理整个系统的工具,因此所有pacman软件包都使用绝对文件夹(已解压缩)进行压缩。相对于全球系统根)。
由于MSYS2(通过Cygwin; MSYS2的核心功能归功于Cygwin)提供" / etc / fstab",您可能会考虑使用它来使您能够放置" / mingw { 32,64}"在其他地方,在某种程度上你可以逃脱,但我强烈建议你不要这样做,因为它只会导致问题。例如,期望能够使用" ../"的相对路径的Native Windows程序;来自" C:/ msys64 / mingw64"到" C:/ msys64"将会非常失望,我的意思是他们可能会崩溃。出于这个原因,我不会告诉你如何实现这样一个破碎的系统。
您应该尝试将您的MSYS2安装视为一个完整的子系统,我们已做出一些决定(例如" /"的位置,& #34; / mingw32"和" / mingw64"文件夹),以便您提高兼容性并删除一些会使问题更加频繁且难以诊断和修复的变量。
由于Windows 260 MAXPATH限制,我还建议将MSYS2安装到驱动器的根目录(任何驱动器)。我知道,对于UNC路径,限制更远,但大多数MSYS2和Windows软件不使用UNC路径并且具有大小为MAXPATH + 1的硬编码C字符串数组。这样做也可以帮助您将MinGW-w64存储库视为整个MSYS2系统的子存储库,而不是相反。
对于pacman参考,您应该使用以下页面: