window下lapack库和blas库的编译
来源:互联网 发布:ai软件下载最新版 编辑:程序博客网 时间:2024/05/21 00:45
最近要在win64位系统下用到LAPACK库和BLAS库,按照LAPACK网站的指南完成了编译。
BLAS库和LAPACK库都是用fortran语言编写的,许多高层的数学库都用 BLAS 和LAPACK做底层。前者是一个线性运算的基本库,具有矩阵之间运算等功能,LAPACK是一个更高级的线性运算库,包含矩阵分解(LU,SVD),最小二乘等,LAPACK用 BLAS 做底层运算,编译LAPACK的同时也可以编译BLAS。
你需要的东西有4样:MinGW, CMAKE 2.8.12 以上版本,python开发环境。LAPACK的压缩包lapack.tgz。
MinGW是一个支持多种编程语言的编译器,相当于Linux下的gcc在window下的一个克隆,最重要的是它是开源的。CMake是一个跨平台的安装(编译)工具,能够输出各种各样的makefile或者project文件,CMake 的组态档取名为 CmakeLists.txt,压缩包lapack.tgz里就包含了CmakeLists.txt文件。整个过程:CMake构建编译lapack.tgz里的文件需要调用MinGW的c和Fortran编译器的功能。简单的可以描述为CMake和MinGW就像window常见的VS,压缩包lapack.tgz相当于代码,我们并不能直接利用代码,只有将它编译成一个文件才能使用这个库的功能。
(python环境的搭建略过)
首先将lapack.tgz解压到一个文件夹,称为源代码文件夹,我的是:D:\Download\lapack\lapack-3.5.0。注意将文件夹内的make.inc.example文件重命名为make.inc。
然后下载MinGW,要注意的是MinGW的下载不在官网,需要在sourceforge上下。我是下载了mingw-get-setup.exe,然后选择安装使用的功能,我们需要的功能有gcc和gfortran,等待安装完毕,如图1。添加环境变量..\MinGW\bin
图1
接着傻瓜式安装CMake。分为如下几步操作:
1、打开CMake的界面,将where is source code设置为你的源代码文件夹,build the binaries设置为已存在的另一个文件夹用于存放编译生成的文件,下面简称为build文件夹。
2、点击Configure,在Specify the generator for this project 下拉项选MinGW Makefiles,选项组选"Specify native compilers",点击next,选择c和fortran编译器在你机器的路径,我的是"E:/MinGW/bin/mingw32-gcc.exe", 和"E:/MinGW/bin/mingw32-gfortran.exe",c++留空,点击finish,结果如图2。
图2
3、将红色选项中的 'BUILD_SHARED_LIBS' 和 'CMAKE_GNUtoMS' 选中,接着在列表中选中'LAPACKE'。再点一次Configure,除第一行外红色警告都消失了。
4、点击Generate。出现Configuring done和Generating done 提示时,说明编译完成。
5、打开cmd prompt,cd进入build文件夹,执行C:/MinGW/bin/mingw32-make.exe命令,开始漫长的生成过程。生成结束后你可以通过C:/MinGW/bin/mingw32-make.exe test命令来检查是否正确。在build文件夹下的lib文件夹下生成了libblas.a,liblapack.a和libtmglib.a三个文件,至此完成了lapack库和blas库的编译。
下面给出一个例子测试lapack库和blas库。先将libblas.a,liblapack.a和libtmglib.a三个文件复制到编译器调用的库中,以MinGW为例,我的库目录是E:\MinGW\lib,然后将下面代码复制进记事本中,改后缀名为f90。在cmd prompt下进入test.f90所在目录,输入gfortran test.f90 -llapack -lblas 命令,执行生成的文件a.exe结果为a,b值和solve。
program test_sgesvimplicit nonereal :: a(3,3),b(3)integer :: v(3),iflagexternal sgesva=reshape([2.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,4.0],[3,3])b=[998.0,999.0,1000.0]print *,'a=',aprint *,'b=',bcall sgesv(3,1,a,3,v,b,3,iflag)print *,'solve=',bend program test_sgesv
- window下lapack库和blas库的编译
- LAPACK 和 BLAS 库使用简介
- windows下配置BLAS和LAPACK编译失败问题
- blas和lapack的安装
- blas和lapack的安装
- linux下安装blas和lapack
- lapack 在window下编译
- BLAS CBLAS LAPACK编译使用
- blas、lapack和atlas、openblas的区别联系
- mingw环境下lapack库编译方法
- windows 安装python的scipy库,报错error: no lapack/blas resources found
- window下安装Python scipy包报错 no lapack/blas resources found scipy
- Windows下lapack的编译
- Windows下lapack的编译
- Linux环境下Lapack软件包的编译和使用
- Py第二十一问 windows 安装python的scipy库,报错error: no lapack/blas resources found
- 在win的VS2015下编译SuperLU与BLAS的动态库
- Ubuntu科学计算LAMMPS第二期:blas和lapack的安装
- 第九章 9.1节练习 & 9.2节练习
- Thinkphp redirect
- C语言其实不简单:数组与指针
- ASP MVC最近遇到的两个问题(SQL和HTTPWebRequest)
- 解决SSh中公共Dao使用泛型且Dao层无其他Dao,Service直接继承公共Dao,部署到tomcat可能会出现的错误。
- window下lapack库和blas库的编译
- 2014/7/1学习计划与总结
- 想知道一个前辈或高手的sql水平
- 注意不要使用 GENERIC_ALL 代替 GENERIC_READ | GENERIC_WRITE
- 线程可提醒状态是什么?
- 我总结的c#学习路线
- 胖老婆担心老公减肥效果好 想心思将其喂饱增肥
- 2014年8月21日,标记以后正式开始努力windows系统编程
- 为什么软件卖得很贵