Windows上的Arpack(++)

时间:2013-08-04 19:37:39

标签: arpack

我正在努力让Arpack和Arpack ++在Windows 7中使用Visual Studio 2010,并使用swig创建一个可以与C#一起使用的界面。这基本上是为了创建一个基准,我将用它来衡量用C#解决特征向量问题的所有进一步尝试,但首先我需要这个工作。

我已经设法使用this guide编译Arpack,虽然稍有改动,因为g77不再是MinGW附带的Fortran编译器,而是我们得到了gfortran。对ARmake.inc的进一步更改包括注释-cg89选项,这会产生错误(我不知道这个用g77填充的目的,但gfortran不接受它)。

进一步遵循指南,思考“至少它现在已经编译,有或没有选项。”我继续dllwrap。但是,未接受-lg2c选项,因为较新版本的MinGW中不包含库文件libg2c。如果我尝试没有该选项,我会收到来自我的.o和相应.f文件的未定义引用的错误。我应该使用哪些库文件?我做了别的明显错误吗?

1 个答案:

答案 0 :(得分:1)

我发现密钥似乎是使用gfortran而不是dllwrap。这是我在安装MinGW和msys后使用的整个过程

1)运行安装后脚本并确保它没有抱怨缺少gcc等。如果是,请安装这些软件包。

msys\1.0\postinstall\pi.bat

2)将ARPACK文件和补丁提取到msys\1.0\home\yourname\ARPACK

3)修改ARmake.inc并将FCFFLAGS行更改为:

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个dll:libgcc_s_dw2-1.dlllibgfortran-3.dlllibquadmath-0.dll,您可以从MinGW安装中获取。