使用Windows 10 64位,Cabal-3.4.0.0, ghc-8.10.7。
我在MSYS2環境下安裝了OpenBLAS,命令是
pacman -S mingw-w64-x86_64-openblas。
然后,我用命令成功安裝了hmatrix-0.20.2
cabal install --lib hmatrix --flags=openblas --extra-include-dirs="C: ghcupmsys64mingw64includeOpenBLAS" --extra-lib-dirs="C:ghcupmsys64mingw64in" --extra-lib-dirs="C:ghcupmsys64mingw64lib"
我試圖用cabal build cabalhmatrix和Main來構建簡單的測驗專案
module Main where?
import Numeric.LinearAlgebra
main :: IO ( )
main = do
putStrLn $ show $ 向量 [1,2,3] *向量 [3,0, -2]
但現在我得到了輸出
Resolving dependencies...
Build profile。-w ghc-8.10.7 -O1。
按順序,將構建以下內容(使用-v了解更多細節)。
- hmatrix-0.20.2 (lib) (required build)
- cabalhmatrix-0.1.0.0 (exe:cabalhmatrix) (首次運行)
Starting hmatrix-0.20.2 (lib)
Failed to build hmatrix-0.20.2。該故障發生在配置程序中。
步驟。
Build日志 (
C:caballogsghc-8.10.7hmatrix-0。 20.2-6dd2e8f2795550e4dd624770ac98c326dacc0cac.log
):
Warning: hmatrix.cabal:21: 28: Packages with 'cabal-version: 1.12' 或更高的版本
應指定一個特定的版本的Cabal規格的形式
'cabal-version: x.y'。Use 'cabal-version: 1.18'。
配置庫為hmatrix-0.20.2.
cabal-3.4.0.0.exe。Missing對foreign庫的依賴。
* Missing (or bad) C庫: blas, lapack
這個問題通常可以通過安裝以下的系統包來解決
提供這些庫(你可能需要"-dev"/span>版本)。如果這些圖書館
是已經安裝,但在一個非標準的位置則你可以使用
flags --extra-include-dirs= 和 --extra-lib-dirs= 來指定它們的位置。 如果
該庫檔案確實存在,它可能包含被C捕獲的錯誤。
編譯器在預處理階段捕獲的錯誤。在這種情況下你可以重新運行 configure
用verbosity標志-v3來查看錯誤資訊。
cabal-3.4.0.0.exe。Failed to build hmatrix-0.20.2 (which is required by
exe:cabalhmatrix from cabalhmatrix-0.1.0.0)。) 見上面的構建日志中的
詳細內容。
我應該怎樣做才能正確地構建該軟體包?
我想我需要以某種方式傳遞引數 --flags=openblas --extra-include-dirs="C:ghcupmsys64mingw64includeOpenBLAS" --extra-lib-dirs="C: ghcupmsys64mingw64in" --extra-lib-dirs="C:ghcupmsys64mingw64lib" 在編譯程序中,將hmatrix加入,但不知道如何做。說實話,我不明白這些引數到底是給什么程式用的(cabal、ghc、ghc-pkg還是別的什么),為什么cabal又要安裝hmatrix。我看到hmatrix在"C:cabalstoreghc-8.10.7hmatrix-0.20.2-e917eca0fc7690010007a19f4f2a3602d86df0f0"。
創建了cabal.project檔案:
packages: .
package hmatrix
標志。啟用了 " openblas"。
extra-include-dirs: C:ghcupmsys64mingw64includeOpenBLAS。
extra-lib-dirs: C:ghcupmsys64mingw64in, C:ghcupmsys64mingw64libenter code here
在將libopenblas.dll位置添加到PATH變數后,cabal專案開始作業。
uj5u.com熱心網友回復:
即使有--lib標志,一般來說,最好在Cabal不做庫安裝的假設下作業。永遠不要安裝一個庫,而只是依賴它--并在必要時讓Cabal安裝、更新等等。
但是,你怎樣才能傳遞必要的標志?通過cabal.project檔案。
packages: .
package hmatrix
標志: openblas
extra-include-dirs: C:ghcupmsys64mingw64includeOpenBLAS。
...
把這個檔案和cabalhmatrix.cabal一起放在你自己專案的作業目錄中。然后在該目錄下運行cabal build將使用hmatrix安裝合適的庫等標志。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316922.html
標籤:
