Linux下由源码安装ARPACK

2025-10-19 08:39:21

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。

Linux下由源码安装ARPACK

2、这里只安装串行版ARPACK,点击ARPACK

建议先阅读Installation procedures

这里下载GNU zipped tar file of distribution,

点击arpack96.tar.gz 和 patch.tar.gz,下载到linux系统同一个目录下如:

~/zipcontainer

目录下。

Linux下由源码安装ARPACK

Linux下由源码安装ARPACK

3、转到~/zipcontainer目录下:

cd zipcontainer/

解压两个压缩文件:

tar xzf arpack96.tar.gz

tar xzf patch.tar.gz

此时当前目录下有了一个新的文件夹ARPACK。

可以将这个文件夹复制到home目录下:

cp -r ARPACK ~/

转到home目录下的ARPACK目录下:

cd ARPACK/

Linux下由源码安装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

则自动编译。

Linux下由源码安装ARPACK

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

Linux下由源码安装ARPACK

Linux下由源码安装ARPACK

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

就不会出错了。

Linux下由源码安装ARPACK

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

安装完成。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢