在Windows 10上通过MSYS2安装hmatrix时遇到问题

时间:2016-06-30 18:19:10

标签: windows haskell installation msys2 hmatrix

我一直在尝试在我的(64位)Windows 10计算机上安装hmatrix;在搜索并尝试了许多可能的解决方案(包括“Windows”和“替代Windows构建”下的说明here)之后,我决定继续执行此Reddit thread的行动。

但是,当我输入命令

cabal install hmatrix -fopenblas --extra-lib-dir=${c:\msys64\mingw64\bin} --extra-include-dir=${c:\msys64\mingw64\include}

进入MSYS2 shell,给出以下日志:

Resolving dependencies... 
Configuring hmatrix-0.17.0.2...
Failed to install hmatrix-0.17.0.2
Build log ( C:\Users\Christian\AppData\Roaming\cabal\logs\hmatrix-0.17.0.2.log ):
Configuring hmatrix-0.17.0.2...
cabal.exe: Missing dependency on a foreign library:
* Missing C library: libopenblas
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.
cabal: Leaving directory 'C:\msys64\tmp\cabal-tmp-4244\hmatrix-0.17.0.2'
cabal.exe: Error: some packages failed to install:
hmatrix-0.17.0.2 failed during the configure step. The exception was:
ExitFailure 1

但是,当我检查目录c:\msys64\mingw64\bin时,我发现libopenblas.dll就在那里;我不知道为什么cabal似乎无法找到它。

了解为什么这不起作用或做什么?

更新 文件libopenblas.dll.alibopenblas.a位于c:\msys64\mingw64\lib目录中。是否有可能我还需要以某种方式包含此目录? (如果我这样做,我该怎么做?)

我还下载了Alex Vorobiev在下面的评论中的文件,如果它们是.dll,则将它们放在c:\msys64\mingw64\bin中;如果是.libs,则将它们放在c:\msys64\mingw64\lib。标头文件已包含在c:\msys64\include\openblas

我在做出这些更改后尝试了原始帖子中的命令的几个变体,包括使用\bin切换\lib并使用\include切换\include\openblas,但所有这些仍然给出同样的错误。

1 个答案:

答案 0 :(得分:0)

我对

有点怀疑
 if os(windows)
    if flag(openblas)
        extra-libraries:    libopenblas
在cabal文件中,您可以解压缩并删除“lib”部分吗?如果这不起作用,请发布带有-v3输出的日志。我见过很多人在安装这个软件包时遇到了麻烦。那么你是否也可以在GHC错误跟踪器上打开一张票,如果这不起作用(并且CC我是“Phyx - ”)?

其次,你从未说过你正在使用哪种版本的GHC。 8.0.1应该有更少的麻烦(并且不需要hack来使它在GHCi中工作)因为运行时链接器已经过大修并且在Windows上应该要好得多。 8.0.2也可能包括新的导入库支持。