ARPACK在window visual Studio的安装配置
ARPACK是一个求解大规模稠密/稀疏矩阵问题的库,最近在做特征值问题时用到。ARPACK这库相当古老,最早是RICE的一帮人弄的。LAPACK也差不多,貌似是美帝某个.gov发起的。这俩源代码是Fortran,最近论文一个项目需要移植到Windows平台下。方法是C语言的就用VS,Fortran的用MinGW的gFortran编译之,然后打成dll和lib。如果想要更高级点,还有配置ARPACK++。下面谈谈具体怎么配置:
1. 下载
ARPACK库:下载arpack96和对应的patch。ARPACK自带BLAS和LAPACK,没有依赖问题。
MinGW: 下载一个installer。比如我下的是mingw-get-inst-20120426.exe。
2.安装MinGW
执行MinGW安装程序选择目录,比如我的安装目录是C:\MinGW\。记得至少得勾上C++,gfortran编译器和MSYS。
装完以后别忘了附加环境变量PATH:C:\MinGW\bin。
3.解压并改动ARPACK源码
先把arpack96.tar.gz解压,比如我的ARPACK目录是E:\ARPACK\。
将patch.tar.gz解压至ARPACK目录并覆盖。
然后纠结的来了,这里有三个文件要修改,不改动会导致现代gfortran编译不过。
第一个是ARPACK\UTIL\second.f,里面的ETIME遍不过。整个子过程可以替换成:
SUBROUTINE SECOND( T )
REAL T
CALL CPU_TIME(T)
RETURN
END
第二个是ARPACK\BLAS\dnrm2.f,里面的ASSIGN遍不过。不过我们可以在netlib上找到BLAS里最新版本的dnrm2.f。下载并直接覆盖之。
第三个是ARPACK\BLAS\snrm2.f,问题同上,找到最新版本的snrm2.f覆盖。
4.改动ARPACK\ARmake.inc
里面需要改动的有3处:
home = e:/ARPACK (改成自己的ARPACK目录)
FC = gfortran
FFLAGS = -O2
5.编译&打包&VS2010配置
打开MinGW Shell,先
mount
cd e:
cd ARPACK/ (自己的ARPACK目录)
make lib
dllwrap --export-all-symbols BLAS/*.o LAPACK/*.o SRC/*.o UTIL/*.o -lgfortran --output-def arpack_win32.def -o arpack_win32.dll
出现warning无视。然后打开VS2010程序目录下Visual Studio Tools里面的Visual Studio命令提示(2010),
e:
cd ARPACK\
lib /machine:i386 /def:arpack_win32.def
我们需要的就是ARPACK目录下生成的.dll和.lib。
VS2010配置就简单了:
项目属性->配置属性->链接器->常规->附加库目录中添加lib文件夹目录;
项目属性->配置属性->链接器->输入->附加依赖项中添加arpack_win32.lib;
项目属性->配置属性->C/C++->代码生成->运行库选成/MTd(或/MT);
在自己的$(SolutionDir)\Debug或$(SolutionDir)\Release中添加arpack_win32.dll,以及MinGW\Bin下面的libgfortran-3.dll和libquadmath-0.dll。
用MinGW build之后再用VS2010的lib.exe打包,好像就会产生这种依赖,这在MinGW编译LAPACK中也有提及。在用f2c转换的LAPACK的VS2005版本中就没有这个问题,令人非常不爽(节操君)。不管怎么样好用就行了,效率应该也没影响。
ARPACK在window visual Studio的安装配置的更多相关文章
- window golang1.12.4 安装配置&IDE vscode
step 1:下载golang golang官网地址是 https://golang.org/dl/ 如果没有墙的话,可以用这个地址 https://golang.google.cn/dl/ 如图: ...
- 在Visual Studio Code中配置GO开发环境
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- OpenCV2.4.9 & Visual Studio 2010 环境配置篇
1. 准备工作 1.1. 安装 Visual Studio 2010, 需要安装 VC++ 相关功能.具体可求助度娘. 1.2. 下载 OpenCV 2.4.9 For Windows:https:/ ...
- Visual Studio Code中配置GO开发环境
在Visual Studio Code中配置GO开发环境 一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的 ...
- Xamarin C# Android for Visual Studio 平台安装
原文:Xamarin C# Android for Visual Studio 平台安装 Xamarin是基于Mono的平台,目前主要有以下产品(更具体请见:http://xamarin.com/pr ...
- 在Visual Studio 2017上配置Glut
在Visual Studio 2017上配置Glut 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在Visual Studio 2017上配置并使用 ...
- 在Visual Studio 2017上配置并使用OpenGL
在Visual Studio 2017上配置并使用OpenGL 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 首先在Windows下安装Visual ...
- windows通过Visual Studio Code中配置GO开发环境(转)
一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...
- Visual Studio 2013安装Update 3启动crash的解决方法
Visual Studio 2013安装完Update 3后启动立刻crash,异常信息为: System.InvalidOperationException was unhandled Messag ...
随机推荐
- JSON-LD
RDF RDF用于信息需要被应用程序处理而不是仅仅显示给人观看的场合.RDF提供了一种用于表达这一信息.并使其能在应用程序间交换而不丧失语义的通用框架.既然是通用框架,应用程序设计者可以利用现成的通用 ...
- yourphp基本语句
实例化页面代码 1.时间代码:{$vo.createtime|toDate=###,'Y-m-d H:i:s'} 2.连接:{:U('Pro/arr')},{:URL()} 如:<form ac ...
- QQ客服出现“企业QQ在线咨询无权限在当前场景使用!” 问题
加入了QQ“多客服”功能 会出现这个问题 解决办法: 在平台http://wp.qq.com/ 上设置,只需两步骤 步骤一:在http://wp.qq.com/set.html 里,安全级别选项,选择 ...
- bootloader
1) C# 为了给设备升级固件,在前同事的基础上改了下,在.NET Framework下写的. 2)Tera Term + ttl 上面.NET平台的运行文件虽然小巧,但是依赖.NET Framewo ...
- awk操作数组注意几点
awk的数组跟其他程序设计语言的数组有所不同:1.可以直接在awk中定义数组:2.数组元素的初始值为0或空字符串,除非他们被显示的指定初始化:3.数组可以自动扩展:4.都是关联数组,数字下标也会转成字 ...
- Database Schema Reader
数据架构与INSERT脚本生成 https://dbschemareader.codeplex.com/wikipage?title=Writing%20Data&referringTitle ...
- java在继承中父类的成员变量是否会被子类所覆盖
假如 父类 int num =7:子类 int num =9:父类是否会被子类所覆盖? 给你看两个例子: 第一个例子: 第二个例子: 这两个例子的区别只有一句话 由此证明了子类从父类继承的时候 ...
- 再说vim的tab设置
首先, vim的设置允许简写 // 单击一次tab,停靠, 停止在 4个spaces距离处 set tabstop=4 , 可以简写为: set ts=4 // 允许将tab转换为空格 turn ta ...
- winScp上传文件时,如何过滤制定文件
在用winScp上传文件时,有些文件不想上传到服务器上.怎么办呢? 比如我希望过滤.svn .git文件和目录怎么操作呢? 第一步:在菜单上选中选项,点击选项. 第二步,点击传输->编辑 第三步 ...
- [设计模式] javascript 之 组合模式
组合模式说明 组合模式用于简单化,一致化对单组件和复合组件的使用:其实它就是一棵树: 这棵树有且只有一个根,访问入口,如果它不是一棵空树,那么由一个或几个树枝节点以及子叶节点组成,每个树枝节点还包含自 ...