主题:[原创]Windows下也可以编译lapack的静态连接库了
今天去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编译出来的文件小一点。