Проблемы с установкой hmatrix через MSYS2 в Windows 10

Я пытался установить hmatrix на свой (64-разрядный) компьютер с Windows 10; после поиска и опробования многих возможных решений (включая инструкции в разделе «Windows» и «Альтернативная сборка Windows», приведенные здесь), я решил следовать курсу действий, указанному в этой Тема Reddit.

Однако, когда я набираю команду

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

в оболочку MSYS2 выдается следующий журнал:

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 находится прямо там; Я не знаю, почему Кабал не может его найти.

Любое понимание того, почему это не работает или что делать?

ОБНОВЛЕНИЕ: файлы libopenblas.dll.a и libopenblas.a находятся в каталоге c:\msys64\mingw64\lib. Возможно ли, что мне нужно как-то включить и этот каталог? (Если да, то как бы я это сделал?)

Я также скачал файлы из комментария Алекса Воробьева ниже и поместил их в c:\msys64\mingw64\bin, если они .dll, или c:\msys64\mingw64\lib, если они .lib. Файлы заголовков уже содержались в c:\msys64\include\openblas.

Я попробовал несколько вариантов команды в исходном сообщении после внесения этих изменений, включая переключение \bin на \lib и переключение \include на \include\openblas, но все они по-прежнему дают ту же ошибку.


person Christian Gorski    schedule 30.06.2016    source источник
comment
dll недостаточно для компиляции с библиотекой. Вам также нужны файлы разработки - заголовки C++ и файлы .lib. См. здесь icl.cs.utk.edu/lapack-for-windows /lapack/#libraries_mingw   -  person Alex Vorobiev    schedule 30.06.2016
comment
Я попытался загрузить файлы и действовать, как описано выше в моем редактировании, но получаю ту же ошибку.   -  person Christian Gorski    schedule 05.07.2016


Ответы (1)


я немного подозрительно отношусь к

 if os(windows)
    if flag(openblas)
        extra-libraries:    libopenblas

в файле cabal, не могли бы вы распаковать его и удалить часть «lib»? Если это не сработает, отправьте журнал с выводом -v3. Я видел немало людей, у которых возникли проблемы с установкой этого пакета. Не могли бы вы также открыть тикет в системе отслеживания ошибок GHC, если это не сработает (и скопируйте мне «Phyx-»)?

Во-вторых, вы так и не сказали, какую версию GHC используете. 8.0.1 должно иметь гораздо меньше проблем (и не потребуется хак, чтобы заставить его работать в GHCi), поскольку компоновщик времени выполнения был переработан и должен быть намного лучше в Windows. 8.0.2, скорее всего, также будет включать поддержку новых библиотек импорта.

person Phyx    schedule 06.08.2016