参考资料:
[1]http://www.cnblogs.com/hellraider/archive/2012/09/29/2707231.html#
[2]https://blog.csdn.net/yunfeiyang62/article/details/45949701
首先感谢参考资料中的博主,特供的方法,很实用,由于本人想用ARPACK求解前k个特征值,特征向量问题,如果只想知道LAPACK的,可以看参考资料[1]中的相应部分,下面谈谈具体怎么搞:
1、下载
ARPACK库:下载arpack.tar.Z和对应的patch.tar.gz,ARPACK自带BLAS和LAPACK,没有依赖问题。
MinGW:下载一个installer,我下的是mingw-get-setup.exe
2、安装MIinGW
执行MinGW安装程序选择目录,我的安装目录是C:\MinGW\,安装完毕后,会有如下界面:
至少勾gcc,gfortran编译器和MSYS
装完后别忘附加环境变量PATH :C:\MinGW\bin
win10添加环境变量方法:点击打开链接
3、解压并改动ARPACK源码
先把arpack96.tar.gz解压,比如我的ARPACK目录是E:\ARPACK\
将patch.tar.gz解压至ARPACK目录并覆盖
然后ARPACK中有三个文件需要修改,不改动会导致现代gfortran编译不过。
第一个是ARPACK\UTIL\second.f,里面的ETIME遍不过。整个子过程可以替换成:
SUBROUTINE SECOND( T )
REAL T
CALL CPU_TIME(T)
RETURN
END
这里当时我在修改时候出现一个问题:我在将second.f替换后,之后在编译的时候,出现错误:
error-non-numeric-character-in-label-at-1
这个错误由于自己不清楚Fortran的代码结构,Fortran的代码必须从第七列或者更后开始,参考
将结构变成如下形式就可以了
第二个是ARPACK\BLAS\dnrm2.f,里面的ASSIGN遍不过。不过我们可以在netlib上找到BLAS里最新版本的dnrm2.f。下载并直接覆盖之。
第三个是ARPACK\BLAS\snrm2.f,问题同上,找到最新版本的snrm2.f覆盖
4、改动ARPACK\ARmake.inc
里面需要改动的有3处: