如何在Windows下使用BLAS和LAPACK构建hmatrix?

4

Windows 10 x64 Cabal 1.22

我正在按照https://github.com/AlbertoRuiz/hmatrix/blob/master/INSTALL.md中的Windows部分步骤操作。

我下载了hmatrix源码和gsl-lapack-windows.zip。当我尝试使用以下命令安装hmatrix时:

D:\Projects\workspace\hmatrix-0.16.1.5>cabal install --extra-include-dirs=D:\Projects\workspace\gsl-lapack-windows\ --extra-lib-dirs=d:\Projects\workspace\gsl-lapack-windows\

我收到了以下消息,我无法解决:

配置hmatrix-0.16.1.5... 安装hmatrix-0.16.1.5失败 Build log (D:\Projects\workspace\hmatrix-0.16.1.5.cabal-sandbox\logs\hmatrix-0.16.1.5.log): 配置hmatrix-0.16.1.5... setup-Simple-Cabal-1.22.4.0-x86_64-windows-ghc-7.10.2.exe:缺少外部库的依赖项: * 缺少C库:blas、lapack、blas、lapack。这个问题通常可以通过安装提供这些库的系统软件包(您可能需要“-dev”版本)来解决。如果这些库已经安装但不在标准位置,则可以使用标志--extra-include-dirs =和--extra-lib-dirs =指定它们的位置。cabal:Error:有些软件包安装失败:hmatrix-0.16.1.5在配置步骤中失败。异常是:ExitFailure 1

"-dev版本"我认为只适用于基于*nix的操作系统。在我提供给Cabal的文件夹中有blas.dll和lapack.dll。

问题可能出在哪里?


我也遇到了这个问题。看来我们不是唯一的人。你有没有修复它的好运?另请参见:https://github.com/albertoruiz/hmatrix/issues/125 - TheCriticalImperitive
我已经修复了一些OpenBLAS cabal支持的问题。但是仍然存在编译问题: https://github.com/albertoruiz/hmatrix/pull/147 - The_Ghost
1个回答

1

试试这个:

  1. https://sourceforge.net/projects/mingw-w64/files/安装mingw,我选择的是x86_64-posix-seh。我们只需要libgfortran-3.dll,这在ghc的mingw中不存在。或者你可以从这里获取:http://icl.cs.utk.edu/lapack-for-windows/libraries/VisualStudio/3.6.0/Dynamic-MINGW/Win64/libgfortran-3.dll(如果需要,在url中用Win32替换Win64)
  2. https://sourceforge.net/projects/openblas/files/获取OpenBLAS二进制文件(在我的情况下为Win64-int32)。
  3. libopenblas.dlllibgfortran-3.dll放置在某个文件夹中,我选择的是C:\Programs\lib
  4. cabal install hmatrix --flags=openblas --extra-lib-dirs=C:\Programs\lib

这就是全部内容。您还需要将库传递给 ghci(所有库都必须在 PATH 中,因此在我的情况下 ghc 的 mingw\binC:\Programs\lib 在 PATH 中):

ghci -llibopenblas -llibgfortran-3 -llibgcc_s_seh-1

其中 libgcc_s_seh-1.dll 在 ghc 的 mingw 中(在我的情况下:C:\Programs\ghc\ghc-8.0.1\mingw\bin

注意:已测试使用 ghc-8.0.1
更新:我发现现在可以用更少的步骤完成


当我运行6时,出现“缺少C库:libopenblas”。 - holdenlee
请确保您的额外包含目录中有BLAS头文件。 在我的情况下:'d:\Programs\openblas\include' 中有 cblas.hf77blas.h 等文件。 - Alexander VoidEx Ruchkin
我在目录中有blas头文件(对我来说是C:/PF/openblas/include),因此我执行cabal install --flags=openblas --extra-lib-dirs=C:/PF/openblas/lib --extra-include-dirs=C:/PF/openblas/include。我按照第2步克隆了OpenBLAS,其中包含在include目录中的blas头文件。 - holdenlee
我找到了一些时间来重试。看起来现在可以用更少的步骤完成,而且不需要构建OpenBLAS并从源代码安装hmatrix。希望这有所帮助。 - Alexander VoidEx Ruchkin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接