我一直在尝试在我的(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.a
和libopenblas.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
,但所有这些仍然给出同样的错误。
答案 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也可能包括新的导入库支持。