2011-04-22 73 views
3

問題已解決!找不到cabal在Windows上找到haskell-mpi的mpi庫

  1. 按照說明笠頭貼here
  2. 打開你的環境變量(我的電腦 - >屬性(在上下文菜單) - >高級)
  3. 加入或創建一個新的環境變量C_INCLUDE_PATH所以指向MPI的包含目錄。在我的情況下,/c/program files/mpich2/include
  4. 添加或創建一個新的環境變量LIBRARY_PATH因此它指向MPI的lib目錄。在我的情況下,/c/program files/mpich2/lib
  5. 以某種方式隱藏libmpi.a。如果需要,您可以稍後解決。這是一個黑客,但你不能建立haskell-mpi,因爲ld會失敗。我將它重命名爲_libmpi.a

現在haskell-mpi應該在windows上生成。預計更多的麻煩,但它的建立,它解決了我的問題。


,我想在我的大學實驗室做我最後的項目我的並行計算類的一個實驗室機器上使用哈斯克爾-MPI,但我遇到了麻煩試圖讓哈斯克爾-MPI構建針對MPICH2。

haskell-mpi幾乎完全沒有記錄,並通過他們的git存儲庫進行挖掘幫助我編寫了一些示例程序,但沒有做任何事情來幫助我在Windows上進行設置。在我的個人linux系統上,我沒有麻煩設置並運行鍼對MPICH2的haskell-mpi。

問題可能出在cabal上,MPICH2的安裝方式,或與haskell-mpi的cabal配置,因此選擇標籤。

爲了解決問題並在需要時添加更多信息,我願意在此嘗試,但最終我將無法再訪問這些機器。

我在實驗室中擁有管理員權限,因此如果問題出在MPICH2安裝本身上,我確實可以重新安裝它。

小集團,當我嘗試安裝哈斯克爾-MPI如下失敗:

Resolving dependencies... 
Configuring haskell-mpi-1.0.0... 
cabal: Missing dependency on a foreign library: 
* Missing C library: mpi 
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: Error: some packages failed to install: 
haskell-mpi-1.0.0 failed during the configure step. The exception was: 
ExitFailure 1 

這裏是我的嘗試給予了--extra-LIB-迪爾斯和--extra,包括 - 迪爾斯:

--extra-lib-dirs="C:\Program Files\MPICH2\lib" 
--extra-include-dirs="C:\Program Files\MPICH2\include" 

我試過重新排序我在那裏放置這些標誌,逃避反彈,使用短路徑PROGRA~1和這些的各種排列。所以我認爲這不會有幫助。我需要知道mpi依賴關係的實際含義,並弄清楚我將如何滿足它,以便該庫可以實際構建。下面是在上述兩個文件夾,在這一刻是什麼生活:

利布斯:

Volume in drive C has no label. 
Volume Serial Number is 5406-5C5C 

Directory of C:\Program Files\MPICH2\lib 

04/22/2011 01:20 PM <DIR>   . 
04/22/2011 01:20 PM <DIR>   .. 
01/31/2011 03:59 PM   515,704 cxx.lib 
01/31/2011 04:23 PM   137,434 fmpich2.lib 
01/31/2011 04:25 PM   410,982 fmpich2g.lib 
01/31/2011 04:29 PM   162,690 fmpich2s.lib 
01/31/2011 04:53 PM     0 libfmpich2g.a 
01/31/2011 04:53 PM     0 libmpi.a 
01/31/2011 04:53 PM   215,528 libmpicxx.a 
01/31/2011 04:16 PM   10,618 mpe.lib 
01/31/2011 04:46 PM   135,434 mpi.lib 
       9 File(s)  1,588,390 bytes 
       2 Dir(s) 221,505,835,008 bytes free 

包括:

Volume in drive C has no label. 
Volume Serial Number is 5406-5C5C 

Directory of C:\Program Files\MPICH2\include 

02/01/2011 05:38 PM <DIR>   . 
02/01/2011 05:38 PM <DIR>   .. 
11/17/2009 09:46 PM    4,857 clog_commset.h 
11/02/2007 05:50 PM    696 clog_const.h 
01/31/2011 03:50 PM    731 clog_inttypes.h 
11/17/2009 09:46 PM    1,353 clog_uuid.h 
10/21/2010 01:20 PM    355 mpe.h 
11/17/2009 09:46 PM   11,102 mpe_log.h 
11/02/2007 05:50 PM    1,833 mpe_logf.h 
11/17/2009 09:46 PM    1,322 mpe_misc.h 
01/31/2011 03:50 PM   57,128 mpi.h 
01/31/2011 04:23 PM    3,251 mpi.mod 
01/31/2011 03:50 PM   97,267 mpicxx.h 
01/31/2011 03:51 PM   19,051 mpif.h 
01/31/2011 03:50 PM   16,765 mpio.h 
01/31/2011 04:23 PM   13,668 mpi_base.mod 
01/31/2011 04:23 PM   30,866 mpi_constants.mod 
01/31/2011 04:23 PM    7,802 mpi_sizeofs.mod 
       16 File(s)  268,047 bytes 
       2 Dir(s) 221,505,830,912 bytes free 

有什麼在這裏,可能是可辨別缺失?

我很困惑這一點。幾乎任何建議都會有所幫助。

此致,Barend。

PS:這可能應該被標記爲「haskell-mpi」,但我不允許製作新標籤。我猜其他人還沒有真正使用它。

編輯:繼笠頭的建議,

我安裝MingGW和MSYS。運行mingw-get更新後,我使用mingw32-get來檢索libtools,mingw32-utils和mingw32-binutils。我設置使用Windows配置GUI整個系統的以下環境變量:

LIBRARY_PATH="C:\Program Files\MPICH2\lib" 
C_INCLUDE_PATH="C:\Program Files\MPICH2\include" 

echo $LIBRARY_PATHecho %LIBRARY_PATH%現在都按預期方式工作,沒有驚喜出現。環境變量已設置。取得進展。

cabal install haskell-mpi仍然產生與之前相同的輸出。

玩LD很長一段時間,巨大的紅色鯡魚...

我不得不從LD隱藏libmpi.a得到它的工作,但哈斯克爾-MPI現在建立!

將步驟細節放在頂部。

+1

這是爲什麼太局部化?不要緊,它現在已經關閉了,因爲dons已經回答了它,但它應該適用於任何想在Windows上使用haskell-mpi的人。 – 2012-08-29 20:38:03

回答

2

我需要知道什麼是MPI的依賴實際上意味着

extra-libraries: mpi意味着驚天動地將增加-lmpi到LD連接選項。另外,處理標題的工具將在包含路徑中進行搜索。

那麼,我們如何幫助GHC和binutils找到該庫?

to the wiki,假設你有MinGW的MSYS或者,

如果您需要鏈接到C-軟件,定義一個環境變量C_INCLUDE_PATH列出其中的頭文件可以找到的目錄。爲了鏈接庫,您還需要定義一個環境變量LIBRARY_PATH,列出可以找到.a和.lib文件的目錄。

所以嘗試設置路徑,包括路徑頭文件和庫。

+0

這對我來說並不完全是一個完整的解決方案,但事實證明它是最重要的,並使我找到了發現其餘部分的途徑。在事情真正構建之前,我必須重命名一個文件。非常感謝。 – 2011-04-22 22:22:46