Это не совсем оказалось для меня целым решением, но оказалось, что большинство из них и поставило меня на путь открытия всего остального. Мне пришлось переименовать один файл, прежде чем все будет на самом деле. Большое спасибо.
ЕМА РЕШЕНА!
Следуйте инструкциям, опубликованным DonsВотОткройте переменные среды (Мой компьютер -> Свойства (в контекстном меню) -> Дополнительно)Добавить или создать новую переменную средыC_INCLUDE_PATH
поэтому он указывает на каталог включения MPI. В моем случае,/c/program files/mpich2/include
.Добавить или создать новую переменную средыLIBRARY_PATH
поэтому он указывает на каталог lib MPI. В моем случае,/c/program files/mpich2/lib
Спрячь libmpi.a как-нибудь. При необходимости вы можете исправить это позже. Это хак, но вы не можете собрать haskell-mpi без этого, потому что ld потерпит неудачу. Я переименовал его в _libmpi.aТеперь haskell-mpi должен собираться на Windows. Предвидя больше проблем в будущем, но это построило, и это решило мою проблему.
Я хочу использовать haskell-mpi на лабораторной машине в одной из моих университетских лабораторий, чтобы выполнить мой окончательный проект для моего класса параллельных вычислений, но у меня возникают проблемы, пытаясь заставить haskell-mpi построить против MPICH2.
haskell-mpi почти полностью не документирован, и копание в их git-репозитории помогло мне запрограммировать некоторые примеры программ на нем, но не помогло настроить его на Windows. В моей личной системе Linux у меня не было проблем с настройкой и запуском haskell-mpi против MPICH2.
Проблема, вероятно, в одном из cabal, в способе установки MPICH2 или в конфигурации cabal haskell-mpi, отсюда и выбор тегов.
Я открыт для экспериментов здесь с целью устранения неполадок и добавления дополнительной информации по мере необходимости, но со временем у меня больше не будет доступа к этим машинам.
У меня есть права администратора в лаборатории, где я буду его запускать, поэтому, если проблема связана с самой установкой MPICH2, я действительно могу переустановить ее.
Cabal не работает следующим образом, когда я пытаюсь установить haskell-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-dirs и --extra-include-dirs:
--extra-lib-dirs="C:\Program Files\MPICH2\lib"
--extra-include-dirs="C:\Program Files\MPICH2\include"
Я попытался изменить порядок, где я поставил эти флаги, избегая зазоров, используя короткий путьPROGRA~1
и различные сочетания этих. Поэтому я не думаю, что это поможет. Мне нужно знать, чтоmpi
Зависимость на самом деле означает и выяснить, как я буду ее удовлетворять, чтобы эта библиотека могла на самом деле построить. Вот что сейчас находится в двух вышеупомянутых папках:
Libs:
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
Есть ли здесь что-нибудь, чего можно было бы пропустить?
Я довольно озадачен в этом пункте. Любое предложение будет полезно.
С уважением, Баренд.
PS: Вероятно, это должно быть помечено "haskell-mpi", но я не могу делать новые теги. Я думаю, что никто еще не использует его на самом деле.
РЕДАКТИРОВАТЬ: Следуя предложению Дона,
Я установил MingGW и MSYS. После запуска обновления mingw-get я использовал mingw32-get для получения libtools, mingw32-utils и mingw32-binutils. Я установил следующие переменные среды для всей системы с помощью графического интерфейса Windows:
LIBRARY_PATH="C:\Program Files\MPICH2\lib"
C_INCLUDE_PATH="C:\Program Files\MPICH2\include"
echo $LIBRARY_PATH
а такжеecho %LIBRARY_PATH%
теперь оба работают как положено, никаких сюрпризов нет. Переменные среды установлены. Продвигается.
cabal install haskell-mpi
по-прежнему производит тот же вывод, что и раньше.
Давно играл с лд, огромной красной селедкой ...
Мне пришлось скрыть libmpi.a от ld, чтобы он заработал, но теперь haskell-mpi собирается!
Размещаем пошаговые подробности вверху.