# linux下安装blas和lapack(atlas)

linux下安装blas和lapack

不知为啥调用命令sudo apt-get install liblapack-dev
sudo apt-get install libatlas-dev
sudo apt-get install libatlas-base-dev
都显示安装成功,但是就是找不到相应的.a文件,真是坑阿,同实验室的老哥一安装就安装成功了。。猜测可能是cpu、gpu或者ubuntu版本的问题,可能需要换16版本的ubuntu,但还没有实践。欢迎进坑和出坑的老哥来一起探讨。
步骤一、当然是下载解压lapack安装包。
由于lapack3.8的版本包含了CBLAS、BALS,但是CBLAS里缺少文件,找不到Makefile.LINUX 所以建议下载lapack和cblas安装包就ok。
lapack下载地址:http://www.netlib.org/lapack/
cblas下载地址: http://www.netlib.org/blas/blast-forum/cblas.tgz
之后是解压文件:输入:tar zxvf 文件名.tgz -C ./ 比如我想解压到Home下:则变成tar zxvf simple-examples.tgz -C /Home
cd lapack-3.1.1
将CBLAS文件拷贝到lapack文件目录下(方便操作)。

步骤二、编译
安装过程中会使用到gfortran编译器,如果没有安装则使用sudo apt-get install gfortran进行安装。

1、blas的安装

gfortran -c  -O3  -fPIC  *.f         //cd到BLAS/SRC文件下
//有攻略说要编译所有的 .f 文件,生成 .o文件  ,但是我进到BLAS/SRC文件下.o文件都生成好了所以没有经历这一步直接执行了最后一步生成.a文件
gcc -shared *.o -fPIC -o  libblas.so
cp libblas.so /usr/local/lib/
ar rv libblas.a *.o  # 链接所有的 .o文件,生成 .a 文件  
sudo cp libblas.a /usr/local/lib  # 将库文件复制到系统库目录

2、cblas的安装
进入CBLAS文件夹,根据你自己的计算机平台,将目录下某个 Makefile.XXX 复制为 Makefile.in , XXX表示计算机的平台,如果是Linux,那么就将Makefile.LINUX 复制为 Makefile.in,然后使用下面的命令安装:

 cp ../BLAS/libblas.a  testing`  # 将上一步编译成功的 libblas.a 复制到 CBLAS目录下的testing子目录  
 make # 编译所有的目录    
  将lib文件夹下cblas-LINUX.a文件名改为libcblas.a
  sudo cp lib/libcblas.a /usr/local/lib/libcblas.a # 将库文件复制到系统库目录下 

3、lapack的安装

编译 lapack以及lapacke,这一步比较麻烦,首先当然是进入lapack-3.4.2文件夹,然后根据平台的特点,将INSTALL目录下对应的make.inc.XXX 复制一份到 lapack-3.4.2目录下,并命名为make.inc, 这里我复制的是 INSTALL/make.inc.gfortran,因为我这里用的是gfortran编译器。
因为lapack以含于blas库,所以需要对lapack-3.4.2/Makefile做如下修改

lib: lapacklib tmglib
#lib: blaslib variants lapacklib tmglib
    修改为:
    #lib: lapacklib tmglib
    lib: blaslib variants lapacklig tmglib

再执行

make # 编译所有的lapack文件 (这里我报了一个错)
报错内容为:
make[1]: 进入目录“/home/dorwin/下载/lapack-3.7.0/SRC/VARIANTS”
ar cr LIB/cholrl.a cholesky/RL/cpotrf.o cholesky/RL/dpotrf.o cholesky/RL/spotrf.o cholesky/RL/zpotrf.o
ar: LIB/cholrl.a: 没有那个文件或目录
Makefile:38: recipe for target ‘cholrl’ failed
make[1]: *** [cholrl] Error 1
make[1]: 离开目录“/home/dorwin/下载/lapack-3.7.0/SRC/VARIANTS”
Makefile:39: recipe for target ‘variants’ failed
make: *** [variants] Error 2
报错原因:少了个文件夹。。加入文件夹即可解决:
cd SRC/VARIANTS
mkdir LIB
虽然.a文件已经生成,但还是又报了一个错:

./xeigtstz < nep.in > znep.out 2>&1 Makefile:469: recipe for target
‘znep.out’ failed make[1]: *** [znep.out] Error 139 make[1]:
离开目录“/home/dorwin/下载/lapack-3.7.0/TESTING” Makefile:45: recipe for
target ‘lapack_testing’ failed make: *** [lapack_testing] Error 2

加入命令即可解决:ulimit -s unlimited
继续make又报了一个错:

make[1]: 离开目录“/home/dorwin/下载/lapack-3.7.0/TESTING”
./lapack_testing.py /usr/bin/env: “python”: 没有那个文件或目录 Makefile:45:
recipe for target ‘lapack_testing’ failed make: *** [lapack_testing]
Error 127

貌似是python的,不管啦,我们的目标文件-liblapack.a, librefblas.a, libtmglib.a已经生成,继续下一步,而且,我也不用python

    cd LAPACKE # 进入lapacke 文件夹,这个文件夹包含lapack的C语言接口文件    
    make # 编译lapacke    
    sudo cp include/*.h /usr/local/include #将lapacke的头文件复制到系统头文件目录    
    cd .. #返回到 lapack-3.4.2 目录    
   sudo cp *.a /usr/local/lib # 将生成的所有库文件复制到系统库目录 

4、altas的安装
不知为啥,这时定位atlas.a居然能找到了,我也不知道是哪部安上去的,不管啦。。总之安上去了。。。

你可能感兴趣的:(# linux下安装blas和lapack(atlas))