windows下编译umfpack

系统配置: Windows7旗舰版64位,Intel i3 2.4GHz,4G RAM。

版      本: AMD-2.3.1 SuiteSparse_config-4.0.2 UMFPACK-5.6.1

结      果: 编译出windows xp/7下umfpack32位运行时库。

介绍

关于umfpack详细参考(http://www.cise.ufl.edu/research/sparse/umfpack/),其中编译umfpack主要参考了(http://matrixprogramming.com/2008/03/umfpack)以前编译过了一次,后来又忘了,这次把纪录下来。相关安装包到umfpack网站上下载。

编译

1 把AMD-2.3.1 SuiteSparse_config-4.0.2 UMFPACK-5.6.1三个安装包解压到同一目录下。

2 进入SuiteSparse_config目录下,编辑SuiteSparse_config.mk文件,需要修改三个地方,我们直接编译基于blas版本的链接库,在文件第188行,取消注释,语句变成

UMFPACK_CONFIG = –DNCHOLMOD

第259和第260行变成(取消注释):

CC = gcc
CF = $(CFLAGS) -O3 –fexceptions

第109 110行注释掉,变成:

# BLAS = -lblas -lgfortran
# LAPACK = –llapack

保存上述设置,并关闭SuiteSparse_config.mk文件。

3 打开cygwin终端,进入umfpack目录,比如我把umfpack解压文件放在c盘的umfpack目录下,则键入:

$ cd c:/UMFPACK/UMFPACK

然后再键入“make”,如果一切顺利则会生成三个库文件(有些错误可以忽略不管,只要生成了后面三个库文件),libsuitesparseconfig.a,libamd.a,libumfpack.a,把三个文件后缀名改成lib。

使用

我在vs2010下编译了umfpack提供的demo,把libsuitesparseconfig.lib,libamd.lib,libumfpack.lib链接到程序,最开始会出现链接错误,原因是我们使用了blas库编译umfpack,但是程序中没有提供blas库,参考(http://www.cnblogs.com/xlh20074862/archive/2013/03/17/2964577.html)提供的编译OpenBLAS库方法(该方法会生成三个文件:libopenblas.a,libopenblas.dll,lib*.a),第三个名字我忘了,把第三个文件后缀变成lib并链接到程序中,umfpack中提供例子都可以顺利通过编译。

注:关于程序运行的正确性和时间效率未测试,另外,未编译64位版本。我使用编译clapack库生成的blas库加入到程序中总会出现链接错误,找不到几个前后都有下划线的函数,用http://matrixprogramming.com/2008/03/umfpack提供的ATLAS也没有通过编译,不知道其中具体什么原因,知道的可以说下。

posted @ 2013-03-17 18:19  ChengshengXiong  阅读(2077)  评论(0编辑  收藏  举报