Linux 安裝 cblas, lapack, lapacke

1.確保機器上安裝了gfortran編譯器,如果沒有安裝的話,可以使用sudo apt-get install gfortran

2.下載blas, cblas, lapack 源代碼, 這些源碼都可以在 http://www.netlib.org 上找到,下載並解壓。這裏提供我安裝時的下載鏈接 http://www.netlib.org/blas/blas.tgz http://www.netlib.org/blas/blast-forum/cblas.tgz http://www.netlib.org/lapack/lapack-3.4.2.tgz,解壓之後會有三個文件夾,BLAS, CBLAS, lapack-3.4.2

3.這裏就是具體的編譯步驟

1)編譯blas, 進入BLAS文件夾,執行以下幾條命令

gfortran -c  -O3 *.f  # 編譯所有的 .f 文件,生成 .o文件
ar rv libblas.a *.o  # 鏈接所有的 .o文件,生成 .a 文件
su 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 # 編譯所有的目錄
sudo cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a # 將庫文件複製到系統庫目錄下

3)編譯 lapack以及lapacke,這一步比較麻煩,首先當然是進入lapack-3.4.2文件夾,然後根據平臺的特點,將INSTALL目錄下對應的make.inc.XXX 複製一份到 lapack-3.4.2目錄下,並命名爲make.inc, 這裏我複製的是 INSTALL/make.inc.gfortran,因爲我這裏用的是gfortran編譯器。

修改lapack-3.4.2/Makefile, 因爲lapack以來於blas庫,所以需要做如下修改

#lib: lapacklib tmglib

lib: blaslib variants lapacklig tmglib

make # 編譯所有的lapack文件
cd lapacke # 進入lapacke 文件夾,這個文件夾包含lapack的C語言接口文件
make # 編譯lapacke
cp include/*.h /usr/local/include #將lapacke的頭文件複製到系統頭文件目錄
cd .. #返回到 lapack-3.4.2 目錄
cp *.a /usr/local/lib # 將生成的所有庫文件複製到系統庫目錄

這裏的頭文件包括: lapacke.h, lapacke_config.h, lapacke_mangling.h, lapacke_mangling_with_flags.h lapacke_utils.h

生成的庫文件包括:liblapack.a, liblapacke.a, librefblas.a, libtmglib.a

至此cblas和lapack就成功安裝到你的電腦上了。


測試:

可以到 LAPACKE 找測試代碼,這裏是lapacke的官方文檔,比如以下代碼:

#include <stdio.h>
#include <lapacke.h>
 
int main (int argc, const char * argv[])
{
   double a[5*3] = {1,2,3,4,5,1,3,5,2,4,1,4,2,5,3};
   double b[5*2] = {-10,12,14,16,18,-3,14,12,16,16};
   lapack_int info,m,n,lda,ldb,nrhs;
   int i,j;
 
   m = 5;
   n = 3;
   nrhs = 2;
   lda = 5;
   ldb = 5;
 
   info = LAPACKE_dgels(LAPACK_COL_MAJOR,'N',m,n,nrhs,a,lda,b,ldb);
 
   for(i=0;i<n;i++)
   {
      for(j=0;j<nrhs;j++)
      {
         printf("%lf ",b[i+ldb*j]);
      }
      printf("\n");
   }
   return(info);
}

將上訴代碼保存爲test.c,編譯時,別忘了使用gfortran,此外,還需要連接用到的庫,編譯上面的代碼,應使用如下命令:

gfortran test.c -llapacke -llapack -lrefblas

如果能正常編譯,即表示安裝成功。如果要了解這段代碼的具體含義,可以到 LAPACKE  查看


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章