缺少 librefblas.a

Missing librefblas.a

尝试在我的 CentOS 7.xx 机器上使用 gfortran 9.x.x 编译一些 Fortran 代码。有一个特定版本的代码需要链接到 LAPACK 和 BLAS(具体来说,liblapack.a 和 librefblas.a)。已安装 LAPACK(以及所有 -devel 库)和 BLAS(与 -devel 库相同)(两者都在 CentOS 基础仓库中可用)。

虽然我(以及链接器)可以找到 liblapack.a(它在 /usr/lib64 中),但找不到 librefblas.a 的踪迹(这导致链接器痛苦地抱怨,并且编译崩溃和燃烧)。

事实上,我尝试在同一台机器上同时安装 BLAS 和 OpenBLAS,但这没有用——librefblas.a 仍然找不到。

no trace of librefblas.a

CentOS 7 lapack-3.4.2-8.el7 软件包构建不会创建或安装文件 librefblas.a。 IE。没有提供 /usr/lib64/librefblas.a 的可用软件包。 blas-static 包只提供一个文件:/usr/lib64/libblas.a

构建 librefblas.a :

tar xvf lapack-3.4.2-clean.tgz
https://src.fedoraproject.org/repo/p....4.2-clean.tgz
cd lapack-3.4.2/
cp make.inc.example make.inc
make blaslib

...将创建 librefblas.a。

首先要尝试的是使用常规 libblas。将您的 Makefile 更改为使用 libblas 而不是 librefblas 或创建符号链接。然后检查您是否有任何未解决的参考。或者对 OpenBLAS 执行相同的操作并将您的 makefile 指向 libopenblas。请注意,OpenBLAS 还包括 LAPACK。

背景:BLAS 和 LAPACK 是公开可用的接口。有可用的参考实现,但也有许多替代的优化或特定于机器的实现。使用哪一个都无关紧要,因此似乎没有必要特别要求参考。通常,您的 Linux 发行版 libblas 无论如何都是参考版。这可能只是你的 Makefile 的一个怪癖。

在包文件夹中执行此操作:

sudo ln -s $HOME/lapack-3.9.0/librefblas.a /usr/local/lib/librefblas.a

已解决