主题:[原创]Windows下也可以编译lapack的静态连接库了
hhsy
[专家分:330] 发布于 2007-07-09 16:00:00
[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编译出来的文件小一点。
最后更新于:2007-07-10 08:27:00
回复列表 (共26个回复)
11 楼
burning [专家分:270] 发布于 2007-07-11 09:11:00
http://www.netlib.org/lapack/index.html
官方下载的文件里面没有set_environment.bat,不知道怎么回事
下载lapack-3.1.1.tgz下载后后缀为gz,解压后的文件加上后缀tgz,再解压即可得到各个文件
12 楼
hhsy [专家分:330] 发布于 2007-07-11 14:22:00
[quote]http://www.netlib.org/lapack/index.html
官方下载的文件里面没有set_environment.bat,不知道怎么回事
下载lapack-3.1.1.tgz下载后后缀为gz,解压后的文件加上后缀tgz,再解压即可得到各个文件[/quote]
在官方网站上没有找到WINDOWS版的。你说的是LINUX版的。
13 楼
burning [专家分:270] 发布于 2007-07-11 14:32:00
http://jsy.dyn.dhs.org/maths/fortran/netlib
这个我今天一直没有打开,所以到官方去看了看,原来非win版,怪不得,3.0的已经按照学兄的方法搞定,非常感谢。
14 楼
hhsy [专家分:330] 发布于 2007-07-11 19:29:00
哈哈,我也打不开了,如果需要,可以留下EMAIL,我发给你。
15 楼
burning [专家分:270] 发布于 2007-07-11 22:52:00
NMAKE : fatal error U1077: 'cmd' : return code '0x2'
Stop.
提示这个错误,怎么办呢?
16 楼
hhsy [专家分:330] 发布于 2007-07-12 09:06:00
[quote]NMAKE : fatal error U1077: 'cmd' : return code '0x2'
Stop.
提示这个错误,怎么办呢?[/quote]
你是什么操作系统?是通过 点开始菜单运行,输入CMD确认后进入DOS窗口,后再进行LAPACK目录里执行NMAKE的吗?
17 楼
burning [专家分:270] 发布于 2007-07-12 14:36:00
[quote]什么操作系统?是通过 点开始菜单运行,输入CMD确认后进入DOS窗口,后再进行LAPACK目录里执行NMAKE的吗?[/quote]
xp,sp2,是进入dos编译的,lapack在d盘根目录下
18 楼
hhsy [专家分:330] 发布于 2007-07-12 15:37:00
[quote][quote]什么操作系统?是通过 点开始菜单运行,输入CMD确认后进入DOS窗口,后再进行LAPACK目录里执行NMAKE的吗?[/quote]
xp,sp2,是进入dos编译的,lapack在d盘根目录下[/quote]
这个非常奇怪,你能在运行里输入CMD直接进DOS窗口吗?如果可以的话,应该没问题的。
实在不行的话,可以把make.inc文件里shell后的那个cmd改成command试试看。
19 楼
kech [专家分:0] 发布于 2007-09-20 11:27:00
我按照这个办法编译,可是出错了,请帮忙看看:
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 楼
水果香香 [专家分:0] 发布于 2007-10-22 11:05:00
很好的帖子
想问一下如果用Microsoft Fortran Powerstaion来编译,如何修改make.inc文件 谢谢
我来回复