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 查看