在ubuntu编译安装lapack和lapacke时找不到liblapacke.a


我在Ubuntu上想安装Lapack和Lapacke,我老老实实按照官网上的操作下载并执行如下命令:

1
2
3
4
mkdir build
cd build
cmake -DCMAKE_INSTALL_LIBDIR=$HOME/.local/lapack ..
cmake --build . -j --target install

但是不知道是我哪里弄错了,一直找不到liblapacke.a,因此我写的程序就链接不到。

最终参考了Linux 安装 cblas, lapack, lapacke,操作如下:

首先下载最新版lapack包:

1
2
3
4
wget https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.9.1.tar.gz
tar -vxzf v3.9.1.tar.gz
cd lapack-3.9.1
cp INSTALL/make.inc.gfortran make.inc

然后修改根目录下的Makefile:

1
2
lib: lapacklib tmglib
#lib: blaslib variants lapacklig tmglib

修改为

1
2
#lib: lapacklib tmglib
lib: blaslib variants lapacklig tmglib

首先编译BLAS:

1
2
3
4
cd BLAS/SRC
gfortran -c -O3 *.f
ar rv libblas.a *.o
cp libblas.a ../..

然后回到lapack文件夹,编译CBLAS:

1
2
3
cd CBLAS/
cp ../libblas.a testing/
make -j

这样之后就可以在lapack文件夹下找到libcblas.a。

接着回到lapack文件夹,编译lapack:

1
make -j

最后进入LAPACKE编译:

1
2
cd LAPACKE
make -j

make结束之后就可以在lapack文件夹下找到liblapacke.a。然后可以在各个部分对应的文件夹下找到include的*.h文件。