Linux下由源码安装ARPACK
1、ARPACK是MATLAB、Numpy、Scipy等采用的求解矩阵本征值的Fortran数值计算库,可以求解对称、非对称的正定、非正定的厄米、非厄米的实数、复数的矩阵广义、非广义本征值。
进入ARPACK官方网站点击左侧download software
点击
TO GET THE SOFTWARE (Parallel and Serial Codes)下的:
See our new software download page here
的here。

2、这里只安装串行版ARPACK,点击ARPACK
建议先阅读Installation procedures
这里下载GNU zipped tar file of distribution,
点击arpack96.tar.gz 和 patch.tar.gz,下载到linux系统同一个目录下如:
~/zipcontainer
目录下。


3、转到~/zipcontainer目录下:
cd zipcontainer/
解压两个压缩文件:
tar xzf arpack96.tar.gz
tar xzf patch.tar.gz
此时当前目录下有了一个新的文件夹ARPACK。
可以将这个文件夹复制到home目录下:
cp -r ARPACK ~/
转到home目录下的ARPACK目录下:
cd ARPACK/

4、编辑ARmake.inc文件:
路径:~/ARPACK文件夹下
home = ~/ARPACK
平台:可以随意写
PLAT = linux
BLAS和LAPACK库的连接请按照指示写,这里假设没有安装BLAS和LAPACK库。
这里所用的编译环境fortran77编译器为f77:
FC = f77
FFLAGS = -O
由于所用的环境变量已经配好,所以:
MAKE = make
SHELL = sh
在此目录下输入:
make lib
则自动编译。

5、编译完成后就会出现这个数学库的静态链接库:
libarpack_linux.a
此时我们可以到EXAMPLE目录下编译自带的示例程序,这里以
~/ARPACK/EXAMPLES/COMPLEX
里面的实例为例:
cd ~/ARPACK/EXAMPLES/COMPLEX
make complex
发现出错,原因是将etime_函数写成了外部函数,解决这个问题要:
cd ~/ARPACK/UTIL
编辑其中的second.f文件,将第24行注释掉:
* EXTERNAL ETIME
再回到~/ARPACK/目录下,重新编译:
cd ~/ARPACK
make clean
make lib


6、现在我们再回到~/ARPACK/EXAMPLES/COMPLEX目录下编译实例:
cd ~/ARPACK/EXAMPLES/COMPLEX
make complex
发现仍然出错,原因是静态库没有把所有的BLAS和LAPACK库的函数都包含全(如果已经安装好BLAS和LAPACK库的系统则不会出现这个问题)
我们只需要分别进到BLAS和LAPACK文件夹下分别将所有文件编译并放到静态库即可。
cd ~/ARPACK/BLAS
make all
cd ~/ARPACK/LAPACK
make all
此时我们再
回到~/ARPACK/EXAMPLES/COMPLEX目录下编译实例:
cd ~/ARPACK/EXAMPLES/COMPLEX
make complex
就不会出错了。

1、同理解压ARPACK:
tar xzf arpack96.tar.gz
tar xzf patch.tar.gz
修改ARmake.inc:
home = ~/ARPACK
注释:
#BLASdir = $(home)/BLAS
#LAPACKdir = $(home)/LAPACK
#DIRS = $(BLASdir) $(LAPACKdir) $(UTILdir) $(SRCdir)
取消注释:
DIRS = $(UTILdir) $(SRCdir)
修改:
ARPACKLIB = $(home)/libarpack_$(PLAT).a
LAPACKLIB = $(home)/liblapack_$(PLAT).a
BLASLIB = $(home)/libblas_$(PLAT).a
FFLAGS = -O
MAKE = make
SHELL = sh
2、进入BLAS文件夹,修改Makefile:
将所有ARPACKLIB替换为BLASLIB
在BLAS目录下执行:
make all
进入LAPACK文件夹,修改Makefile:
将所有ARPACKLIB替换为LAPACKLIB
在LAPACK目录下执行:
make all
3、进入~/ARPACK/UTILS目录
编辑其中的second.f文件,将第24行注释掉:
* EXTERNAL ETIME
回到~/ARPACK目录
make lib
安装完成。