问题描述
我在 MSYS2 下使用一些特定标志构建 OpenBLAS 已有一段时间了。最近,我在 Windows 10 下安装了 MSYS2 的新安装。在执行标准 pacman -Syu
几次然后安装所需的工具 pacman -S gcc gcc-fortran make cmake git
之后,我克隆了 OpenBLAS 存储库,并执行了 make USE_OPENMP=1 USE_LOCKING=1
和完成后,它创建了一个 dll cygopenblas.dll
而不是普通的 libopenblas.dll
并报告它检测到的操作系统为:
OS ... CYGWIN_NT
。
之前是:
OS ... WINNT
。
此外,当它在寻找库时,之前(当我之前设置它时)它在 libgomp-1.dll
目录中寻找诸如 C:\msys64\mingw64\bin\
之类的东西,现在它正在寻找 {{1} } 在 msys-gomp-1.dll
目录中。
我不确定我是否做了不同的事情,或者系统是否以某种方式更新,但我也不知道是什么决定了这些行为差异,我正在寻找一些指导什么控制了 msys 在哪里寻找东西,以及为什么我的操作系统是 CYGWIN_NT,而在我认为它是 WINNT 之前。
我知道在这一轮中,我通过使用“MSYS2”终端快捷方式打开的终端完成了所有 pacman 安装,而我在使用“MSYS2 MinGW 64 位”终端快捷方式打开的终端中构建了我的程序。我很确定我上次也是这样做的,但也许我记错了。
我知道这有点模糊,但任何指导都将不胜感激。此外,对于除了在不同地方查找名称不同但其他所有内容相同或实际情况不同的库之外,是否有任何区别的任何评论,将不胜感激。
解决方法
MSYS2 提供了几种不同的工具链。您正在使用的那个使用 MSYS2 的 Cygwin 分支。
要切换到常规的非 Cygwin MinGW,请执行以下操作:
- 卸载
gcc
、gcc-fortran
。 - 安装
mingw-w64-x86_64-gcc
、mingw-w64-x86_64-gcc-fortran
。 - 使用
mingw64.exe
重新启动终端。如果操作正确,提示将以洋红色字母显示MINGW64
,而不是MSYS
。
当前的终端模式(MINGW64
与 MSYS
)影响环境变量,最明显的是 PATH
。您以哪种模式操作 pacman
无关紧要,但它会影响 PATH
中的工具链。