1. 从 netlab 下载最新版本的源代码
http://www.netlib.org/lapack/lapack-3.1.0.tgz
2. 将源代码解压缩
tar -zxf lapack-3.1.0.tgz
3. 编辑 make.inc 文件,进行一些系统相关的编译参数设置
PLAT : 设置生成的库函数的后缀,比如 SUN, LINUX之类的,当然也可以不设置;
FORTRAN : 设置编译器,比如 g77, gfortran, ifort, g95 等等;
OPT:设置编译选项,根据具体的编译器和优化要求进行设置;
LOADER : 设置成和FORTRAN 一样就可以了;
4. 编辑 Makefile
找到 lib: 选项。然后设置需要编译的库函数如下
#lib: lapacklib tmglib
lib: blaslib lapacklib tmglib
默认的情况是不编译 blas 库的。
5. 编译和测试 Lapack.
在源代码的根目录下输入 make 回车。然后 make 程序就会自动进行编译和测试。
6. Lapack 函数的使用
如果编译和测试顺利的话会在源代码的根目录下生成三个文件 lapack.a、blas.a、tmglib.a。lapack.a 和 blas.a 就是我们所需要的库函数。它们的使用有两种途径:
a) cp lapack.a liblapack.a , cp blas.a libblas.a 并拷贝到 LD_LIBRARY_PATH 目录下,或者它们所在的目录加入到 LD_LIBRARY_PATH 环境变量中,或者在编译时候加上 “-L lapack所在目录/” 选项。编译的时候加上编译选项 -llapack -lblas。
b) 编译的时候直接把 lapack.a 和 blas.a 一起同需要编译的代码一起编译。比如 要编译的文件为 main.f90 编译器为 gfortran 。 gfortran main.f90 lapack.a blas.a。
当然也可以将 Lapack 做成动态链接库文件的形式来使用。当然,在 linux 系统下也可以直接安装编译好的文件比如 redhat 、suse 安装 rpm 格式的文件,在 ubuntu 和 debian 系统下,安装 deb 格式的文件。但是最好还是根据自己的环境自己编译库函数,这样速度会快一些。我曾在 ubuntu 下做过实验一般情况下速度关系为,自己编译的库函数 > 编译好的库函数 > 调用 matlab 函数。