Arpack(++) на окнах

Я пытаюсь заставить Arpack и Arpack++ работать в Windows 7 с Visual Studio 2010 и использую swig для создания интерфейса, который можно использовать с C#. Это в основном для создания эталона, по которому я буду измерять все дальнейшие попытки решения проблем собственных векторов с C#, но сначала мне нужно, чтобы это работало.

Мне удалось скомпилировать Arpack, используя это руководство, хотя и с небольшими изменениями, поскольку g77 больше не является компилятором Fortran, поставляемым с MinGW, вместо этого мы получаем gfortran. Дальнейшие изменения в ARmake.inc включены комментирование -cg89 вариант, который выдал ошибку (я не знаю, для какой цели это заполнено g77, но gfortran не принимает его).

Далее, следуя руководству, подумайте: "По крайней мере, он составлен сейчас, с опцией или без нее". Я продолжал dllwrap, Тем не менее -lg2c опция не была принята, так как файл библиотеки libg2cне входит в более новую версию MinGW. Если я попытаюсь без опции, я получаю ошибки о неопределенных ссылках от некоторых из моих .o и соответствующий .f-файлы. Какие библиотечные файлы мне следует использовать? Я делаю что-то еще явно неправильно?

1 ответ

Решение

Я нашел ключ, кажется, использовать gfortran вместо dllwrap, Вот весь процесс, который я использовал после установки MinGW и msys.

1) Запустите скрипт post install и убедитесь, что он не жалуется на отсутствие gcc и т. Д. Если это так, установите эти пакеты.

msys\1.0\postinstall\pi.bat

2) Извлеките файлы ARPACK и патч в msys\1.0\home\yourname\ARPACK

3) Редактировать ARmake.inc и изменить FC а также FFLAGS линии к:

FC      = gfortran
#FFLAGS = -O -cg89

4) Редактировать UTIL/second.f и заменить все этим. Это предотвращает ошибку об ETIME. Не уверен, что он делает, но это предлагается http://blog.csdn.net/guillotine007/article/details/8636647

  SUBROUTINE SECOND( T )

  REAL       T

  CALL CPU_TIME(T)

  RETURN

  END

5) Компилировать в.o файлы

make lib

6) Используйте gfortran вместо dllwrap, чтобы связать и создать dll

gfortran -shared BLAS/*.o LAPACK/*.o SRC/*.o UTIL/*.o -o arpack_win32.dll

7) Полученная DLL зависит от 3 других библиотек: libgcc_s_dw2-1.dll, libgfortran-3.dll, libquadmath-0.dll который вы можете получить из установки MinGW.

Другие вопросы по тегам