首页 文章

Windows上的Arpack()

提问于
浏览
2

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

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

进一步遵循指南,思考"at least it's compiled now, with or without option."我继续 dllwrap . 但是,不接受 -lg2c 选项,因为较新版本的MinGW中不包含库文件 libg2c . 如果我尝试没有该选项,我会从我的一些 .o 和相应的 .f -files中获得有关未定义引用的错误 . 我应该使用哪些库文件?我做了别的明显错误吗?

1 回答

  • 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安装中获得 .

相关问题