Linux 安装 cblas, lapack, lapacke

本文提供了在本地计算机上安装CBLAS、BLAS和LAPACK库的详细步骤,包括下载源代码、编译和安装过程,最后通过测试代码验证安装成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


### 在 Linux安装 BLAS 和 LAPACK 的方法 #### 使用源码编译方式安装 BLAS 和 LAPACK 可以通过下载官方发布的 BLAS 和 LAPACK 源代码并手动编译来完成安装。以下是具体操作: 1. **获取 BLAS 源代码** 下载 BLAS 的最新版本源代码,并解压到指定目录。进入该目录后执行以下命令进行编译和打包: ```bash make all ar r libfblas.a *.o ranlib libfblas.a rm -rf *.o ``` 将生成的静态库导出至环境变量以便后续使用: ```bash export BLAS=~/src/BLAS-3.5.0/libfblas.a [^1] ``` 2. **获取 LAPACK 源代码** 同样地,下载 LAPACK 的源代码包并解压缩。配置 `make.inc` 文件以适配本地开发环境需求,随后运行以下指令构建 LAPACK 静态链接库: ```bash make blaslib make lapacklib ``` #### 利用包管理器快速安装 对于基于 Debian 或 Ubuntu 的发行版,可以借助 APT 软件包管理系统简化安装流程。 更新软件仓库索引之后即可一键安装所需依赖项: ```bash sudo apt update sudo apt install libblas-dev libcblas-dev libatlas-base-dev libopenblas-dev liblapack-dev [^2] ``` 上述命令会自动拉取预编译好的二进制文件及其头文件供开发者调用。 另外一种情况适用于 Red Hat/CentOS 类型系统,则需启用 EPEL 存储库再通过 YUM 工具实现相同目的: ```bash sudo yum install epel-release sudo yum install blas-devel lapack-devel atlas-devel openblas-devel [^3] ``` #### 手动复制动态共享对象文件 如果仅希望获得特定架构下的 CBLAS 接口支持而无需重新编译整个项目的话,可以直接拷贝对应的目标文件到标准路径下: ```bash sudo cp path_to_extracted_files/lib/cblas_LINUX.a /usr/local/lib/libcblas.a ``` 最后记得刷新链接器缓存使得新增加的内容生效: ```bash ldconfig ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值