Build ARPACK x64 with MinGW

编译生成ARPACK x64位

试了几乎网上所有的资料,最后试出来如何生成ARPACK x64

用到的工具

MSYS2 下载地址
MinGW64位 下载地址
在这里插入图片描述
ARPACK 下载地址
在这里插入图片描述

1 MinGW安装流程

打开下载的exe(网上很多安装的MinGW流程没有说是什么版本,大多按完是win32的)点Next
在这里插入图片描述
有时候会发生在这里插入图片描述
这样的报错,这时候切换网络,一般实验室网络问题,可以尝试用手机流量下载
然后按如下进行选择
在这里插入图片描述
第一个版本应该最高也没啥问题。详细的解释看
知乎-MinGW-w64安装教程
接下来安装就可以(大概500m)
在这里插入图片描述
安装完成后所在的文件
在这里插入图片描述

2 Msys2安装流程

理论上Msys2可以直接安装MinGw,我事先下好了MinGw所以没有按
安装流程查看
windows搭建gcc开发环境(msys2)
Msys2直接点击链接给的exe就可傻瓜式安装,安装后需要配以下环境
我当前下载的路径为
在这里插入图片描述
修改pacman源
分别在这两个路径下更改(因为只安装x64的所以32的就不管)

  1. \etc\pacman.d\mirrorlist.mingw64
  2. \etc\pacman.d\mirrorlist.msys
    用清华大学的镜像源中更改上述两个文件
    清华大学msys2

接下来打开MSYS2 64-bit,执行pacman -Sy在这里插入图片描述在这里插入图片描述
然后安装msys/make
在这里插入图片描述
如果没有make那么输入make将会出现报错
在这里插入图片描述
可以使用make -v来查看是否安装成功
在这里插入图片描述
将之前下载的MinGW文件放入
在这里插入图片描述
将mingw64整个文件夹复制,放入将会补充mingw64的内容。
在这里插入图片描述

在环境变量里添加路径
D:\msys64\mingw64\bin
D:\msys64\mingw64\opt\bin
在这里插入图片描述
现在gcc应该可以使用,输入查看
gcc -v
在这里插入图片描述

3 编译ARPACKx64

首先下载两个arpack压缩文件arpack96.tar.z和patch.tar.Z
将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 =/d/Environment/ARPACK (改成自己ARPACK的目录)
PLAT = x64
FC= gfortran
FFLAGS= -O

打开在这里插入图片描述
cd 到自己的ARPACK目录

cd /d/Environment/ARPACK

生成.a文件

make lib

在这里插入图片描述
会生成一个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库文件
在这里插入图片描述

生成lib文件

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

cd D:\Environment\ARPACK

然后输入

lib /machine:X64 /def:arpack_x64.def

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

一个意外的错误,在生成.a文件和.o文件事因为编译不正确而后继续进行后面的步骤,可能会出现
在这里插入图片描述
这样一系列的错误,主要是因为之前使用x32生成的没有删除,而后再运行生成.a和.o文件时因为文件存在就不会覆盖,解决方法时删除所有产生的.o文件。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值