回 帖 发 新 帖 刷新版面

主题:[原创]Windows下也可以编译lapack的静态连接库了

[b]1、Lapacke3.0的编译[/b]
今天去lapack的国内镜相网站http://netlib.amss.ac.cn/lapack/上,发现提供了WINDOWS版本的lapack及编译配置文件,下载地址
http://netlib.amss.ac.cn/lapack/lapack-pc.zip
http://netlib.amss.ac.cn/lapack/lapack-pc-df.zip
我用了后来一个,还不知道两个有什么区别。
下载后解压,比较解压路径为G:\lapack。需要修改里面的make.inc文件:
1、修改里面的 HOME = G:\lapack   你解压的文件夹
2、如果用CVF编译的话FORTRAN  = df这一个不需要改,如果用IVF编译的话,改为FORTRAN  = ifort
3、修改优化级别OPTS     = -optimize:5,默认为2

在makefile文件里把include <make.inc>这一行头上的叹号注释去掉

然后,点开始菜单里的运行,输入cmd回车后改更路径到G:\lapack,然后输入nmake回车后开始编译,结束后在这个文件夹下就会有三个LIB库文件了。

在DOS提示符下输入nmake blas_testing可对blas进行测试,输入nmake testing可对lapack进行测试,输入nmake timing测试计算时间。

上面是从国内镜像站点下的是3.0版的。

[b]2、Lapacke3.1.1的编译[/b]

再来说一下3.1.1版的,这里要感谢f2003提供的源文件,下载地址:http://jsy.dyn.dhs.org/maths/fortran/netlib/

下载后解压一下,在目录内有一个环境变量配置文件set_environment.bat,需要在DOS提示符下输入
set_environment.bat /? 回车
就会提示输入参数了,如果你需要编译的库文件运行在X86(也就是32位机),fortran编译器是IVF,且需要编译blas库,则在DOS提示符下输入
set_environment.bat X86 Intel
如果是要运行在64位机上,可以用
set_environment.bat X64 Intel

然后去看一下makefile文件里的include make.inc这一行是不是被注释了,如果是,解除注释。在这之后可以在DOS提示符下输入nmake即开始编译库文件,结束后会在当前文件夹下生成三个库文件:blas_WIN32.lib,lapack_WIN32.lib,tmglib_WIN32.lib

如果是要用CVF编译,则需要在执行set_environment.bat X86 Intel之后去修改make.inc里的编译器。
主要修改:将里面两个ifort.exe换成df.exe,然后将优化选项改为OPTS     =  /optimize:5。
[color=FF0000]记住:一定要在执行完set_environment.bat X86 Intel之后再去修改,因为编译时会用到要一些环境变量,这些环境变量需要由set_environment.bat这个批处理文件来生成,而且在执行这个批处理文件时它从install文件夹下CIPY了一个inc文件来覆盖解压目录下的make.inc。[/color]我一开始没注意这个批处理文件,老是生成不成blas库,后来直接到blas目录下去生成blas库后,测试时老提示找不到blas库,需要将这个库COPY到测试目录下才行,很烦。

另外两点建议:
1、建议大家在执行完set_environment.bat X86 Intel后根据自己电脑配置修改make.inc里的优化参数以达到最优性能;
2、建议在编译时先用nmake lib来生成库文件,然后考虑是否进行测试,因为测试可能需要更长的时间。

后来又用CVF编译了一次,发现CVF编译出来库要比IVF编译出来的文件小一点。

回复列表 (共26个回复)

11 楼

http://www.netlib.org/lapack/index.html
官方下载的文件里面没有set_environment.bat,不知道怎么回事
下载lapack-3.1.1.tgz下载后后缀为gz,解压后的文件加上后缀tgz,再解压即可得到各个文件

12 楼

[quote]http://www.netlib.org/lapack/index.html
官方下载的文件里面没有set_environment.bat,不知道怎么回事
下载lapack-3.1.1.tgz下载后后缀为gz,解压后的文件加上后缀tgz,再解压即可得到各个文件[/quote]

在官方网站上没有找到WINDOWS版的。你说的是LINUX版的。

13 楼

http://jsy.dyn.dhs.org/maths/fortran/netlib
这个我今天一直没有打开,所以到官方去看了看,原来非win版,怪不得,3.0的已经按照学兄的方法搞定,非常感谢。

14 楼

哈哈,我也打不开了,如果需要,可以留下EMAIL,我发给你。

15 楼

NMAKE : fatal error U1077: 'cmd' : return code '0x2'
Stop.
提示这个错误,怎么办呢?

16 楼

[quote]NMAKE : fatal error U1077: 'cmd' : return code '0x2'
Stop.
提示这个错误,怎么办呢?[/quote]

你是什么操作系统?是通过 点开始菜单运行,输入CMD确认后进入DOS窗口,后再进行LAPACK目录里执行NMAKE的吗?

17 楼

[quote]什么操作系统?是通过 点开始菜单运行,输入CMD确认后进入DOS窗口,后再进行LAPACK目录里执行NMAKE的吗?[/quote]
xp,sp2,是进入dos编译的,lapack在d盘根目录下

18 楼

[quote][quote]什么操作系统?是通过 点开始菜单运行,输入CMD确认后进入DOS窗口,后再进行LAPACK目录里执行NMAKE的吗?[/quote]
xp,sp2,是进入dos编译的,lapack在d盘根目录下[/quote]

这个非常奇怪,你能在运行里输入CMD直接进DOS窗口吗?如果可以的话,应该没问题的。
实在不行的话,可以把make.inc文件里shell后的那个cmd改成command试试看。

19 楼

我按照这个办法编译,可是出错了,请帮忙看看:
second.f<16>: Error: Error in opening the Library module file. [DFPORT]
    USE DFPORT
---------------^

我想是找不到"DFPORT"这个库,我到Fortran编译器的安装目录下去找,在include里看到有dfport.f90,dfport.mod两个文件。

请问如何让编译器找到这个库?
我用的是Intel Visual Fortran 9.0

20 楼

很好的帖子
想问一下如果用Microsoft Fortran Powerstaion来编译,如何修改make.inc文件 谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册