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的安装配置的更多相关文章

  1. window golang1.12.4 安装配置&IDE vscode

    step 1:下载golang golang官网地址是 https://golang.org/dl/ 如果没有墙的话,可以用这个地址 https://golang.google.cn/dl/ 如图: ...

  2. 在Visual Studio Code中配置GO开发环境

    一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...

  3. OpenCV2.4.9 & Visual Studio 2010 环境配置篇

    1. 准备工作 1.1. 安装 Visual Studio 2010, 需要安装 VC++ 相关功能.具体可求助度娘. 1.2. 下载 OpenCV 2.4.9 For Windows:https:/ ...

  4. Visual Studio Code中配置GO开发环境

    在Visual Studio Code中配置GO开发环境 一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的 ...

  5. Xamarin C# Android for Visual Studio 平台安装

    原文:Xamarin C# Android for Visual Studio 平台安装 Xamarin是基于Mono的平台,目前主要有以下产品(更具体请见:http://xamarin.com/pr ...

  6. 在Visual Studio 2017上配置Glut

    在Visual Studio 2017上配置Glut 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在Visual Studio 2017上配置并使用 ...

  7. 在Visual Studio 2017上配置并使用OpenGL

    在Visual Studio 2017上配置并使用OpenGL 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 首先在Windows下安装Visual ...

  8. windows通过Visual Studio Code中配置GO开发环境(转)

    一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github ...

  9. Visual Studio 2013安装Update 3启动crash的解决方法

    Visual Studio 2013安装完Update 3后启动立刻crash,异常信息为: System.InvalidOperationException was unhandled Messag ...

随机推荐

  1. Java web 使用页面压缩

    借助类,相关依赖: <!-- https://mvnrepository.com/artifact/net.sourceforge.pjl-comp-filter/pjl-comp-filter ...

  2. UVa 11988 Broken Keyboard(链表->数组实现)

    /*数组形式描述链表:链表不一定要用指针. 题目链接:UVa 11988 Broken Keyboard 题目大意: 小明没有开屏幕输入一个字符串,电脑键盘出现了问题会不定时的录入 home end ...

  3. 兼容IE的写法收集||bug修复

    这篇文章实时更新 属于IE的专属写法 其中,S表示Standards Mode即标准模式,Q表示Quirks Mode,即兼容模式 hack 示例 IE6(S) IE6(Q) IE7(S) IE7(Q ...

  4. winform的扩展的带有截图功能picturebox

    using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using Sys ...

  5. maven test 运行 指定类或方法 打包 mvn clean assembly:assembly

    >mvn test -Dtest=[ClassName] 运行测试类中指定的方法:(这个需要maven-surefire-plugin:2.7.3以上版本才能支持)   >mvn test ...

  6. Java多线程编程核心技术---对象及变量的并发访问(一)

    synchronized同步方法 "非线程安全"其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是"脏读",也就是渠道的数据其实是被更改 ...

  7. ng-repeat指令使用详解

    ng-repeat指令使用详解 link: function(scope,element,attr) scope.$index: if(scope.$last == true){} attr['mng ...

  8. 理解 AngularJS 的 Scope

    一.遇到的问题 问题发生在使用 AngularJS 嵌套 Controller 的时候.因为每个 Controller 都有它对应的 Scope(相当于作用域.控制范围),所以 Controller ...

  9. js jquery, jquery-ui 获取form各种表单input的值?

    如何获取? make up (for): 弥补, 补偿, her beaty cannot make up for her stu'pidity. five Basic laws of human s ...

  10. jQuery.Callbacks 源码解读二

    一.参数标记 /* * once: 确保回调列表仅只fire一次 * unique: 在执行add操作中,确保回调列表中不存在重复的回调 * stopOnFalse: 当执行回调返回值为false,则 ...