为什么在 msys 中构建时 openblas 认为我正在使用 Cygwin

why does openblas when building in msys think I'm using Cygwin

我已经在 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 为:

OS ... CYGWIN_NT.

之前是:

OS ... WINNT.

此外,当它寻找库时,之前(当我之前设置它时)它在 C:\msys64\mingw64\bin\ 目录中寻找类似 libgomp-1.dll 的东西,现在它正在寻找 msys-gomp-1.dllC:\msys64\usr\bin 目录中。

我不确定我是否做了一些不同的事情,或者系统是否以某种方式进行了更新,但我也不知道是什么决定了这些行为差异,我正在寻找一些指导至于是什么控制了 msys 在哪里寻找东西以及为什么我的 os 是 CYGWIN_NT 而在我认为它是 WINNT 之前。

我知道这一轮我通过使用“MSYS2”终端快捷方式打开的终端安装了所有 pacman,而我在使用“MSYS2 MinGW 64 位”终端快捷方式打开的终端中构建了我的程序。我很确定我上次也是这样做的,但也许我记错了。

我知道这有点模糊,但如有任何指导,我们将不胜感激。除了在不同的地方寻找名称不同但其他一切相同或实际上不同的库之外,任何关于这是否有任何区别的评论,将不胜感激。

MSYS2 提供了几个不同的工具链。您使用的是 MSYS2 的 Cygwin 分支。

要切换到常规的非 Cygwin MinGW,请执行以下操作:

  • 卸载 gccgcc-fortran
  • 安装mingw-w64-x86_64-gccmingw-w64-x86_64-gcc-fortran
  • 使用 mingw64.exe 重新启动终端。如果操作正确,提示将用洋红色字母显示 MINGW64,而不是 MSYS.

当前终端模式(MINGW64 vs MSYS)影响环境变量,最显着的是 PATH。从哪种模式操作 pacman 并不重要,但它会影响 PATH.

中的工具链。