Build ARPACK x64 with MinGW

1. 准备工具

MSYS2  https://www.msys2.org/

              

 

    在msys中安装make程序

    pacman -S msys/make

     成功后可以用

               make -v   查看是否安装成功  

               

 MinGW64位: 在MSYS2上直接在线安装

              输入:pacman -S mingw-w64-x86_64-toolchain

    

 

                选择了3)和5)

               安装结束后,在msys65目录下出现

 

     

 

 

     打开mingw64.exe后,可查看安装是否成功

               1) gcc -v

    

 

 

    2) gfortran --version

              

 

 

 2. 准备ARPACK项目文件

             ARPACK   https://www.caam.rice.edu/software/ARPACK/download.html#ARPACK

          1)下载arpack96

          2)   下载patch

 

 

 

 

3 编译Arpackx64

将patch中的内容覆盖到arpack96中
修改3个文件

  1. ARPACK\UTIL\second.f 删除 EXTERNAL ETIME 这一行

  2. ARPACK\BLAS\dnrm2.f 在netlib上找到BLAS里最新版本的dnrm2.f。下载并直接覆盖

  3. ARPACK\BLAS\snrm2.f 找到最新版本的snrm2.f覆盖

修改ARPACK目录下ARmake.inc文件

  

home = G:/ARPACK
PLAT = x64
FC      = gfortran
FFLAGS	= -w -fallow-argument-mismatch -O2

  打开mingw64.exe进入自己的目录

       cd: g:/arpack

       生产.a文件

       make lib

        

Administrator@TL-20180915HCBU MINGW64 /g/ARPACK
$ make lib
Making lib in G:/ARPACK/BLAS
make[1]: Entering directory '/g/ARPACK/BLAS'
Makefile:69: warning: overriding recipe for target '.f.o'
../ARmake.inc:95: warning: ignoring old recipe for target '.f.o'
gfortran -O -c isamax.f
gfortran -O -c sasum.f
gfortran -O -c saxpy.f
gfortran -O -c scopy.f
gfortran -O -c sdot.f
gfortran -O -c snrm2.f
gfortran -O -c srot.f
gfortran -O -c srotg.f
gfortran -O -c sscal.f
gfortran -O -c sswap.f
gfortran -O -c sgemv.f
gfortran -O -c sger.f
gfortran -O -c ssymv.f
gfortran -O -c ssyr2.f
gfortran -O -c strmm.f
gfortran -O -c sgbmv.f
ar  rv G:/ARPACK/libarpack_x64.a isamax.o sasum.o saxpy.o scopy.o sdot.o  snr

  会生成一个libarpack_x64.a文件,并将所有的.f文件生成.o,

 

 

 生成def和dll文件

dllwrap --export-all-symbols BLAS/*.o LAPACK/*.o SRC/*.o UTIL/*.o -lgfortran --output-def arpack_x64.def -o arpack_x64.dll

生成以下两个文件

 

 

 

此处可以查看是否生成的dll位x64 在cmd中输入dumpbin.exe /headers 文件路径
生成lib库文件

本人使用vs2017,win10
直接搜索
在这里插入图片描述
vs2015搜x64的,打开后输入ARPACK的目录

cd G:\ARPACK

然后输入

lib /machine:X64 /def:arpack_x64.def

即可编译出lib文件
在这里插入图片描述

 

 遇到的问题

Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
原因:编译器版本太高
解决办法:https://gcc.gnu.org/gcc-10/porting_to.html
添加编译选项 -fallow-argument-mismatch

参考 https://blog.csdn.net/lzzdflg/article/details/106762803

 

posted @ 2021-02-02 10:28  unicornsir  阅读(400)  评论(0编辑  收藏  举报