1

尝试在我的 CentOS 7.xx 机器上使用 gfortran 9.xx 编译一些 Fortran 代码。具有需要链接到 LAPACK 和 BLAS 的特定代码版本(特别是 liblapack.a 和 librefblas.a)。已安装 LAPACK(和所有 -devel 库)和 BLAS(与 -devel 库相同)(两者都在 CentOS 基础存储库中提供)。

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

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

4

3 回答 3

0

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

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

于 2020-02-22T07:28:18.003 回答
0

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

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

解决了

于 2020-10-08T10:48:21.403 回答
0

没有 librefblas.a 的痕迹

CentOS 7 lapack-3.4.2-8.el7 软件包构建不会创建或安装文件 librefblas.a 。即没有可用的包提供 /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 将被创建。

于 2020-02-21T16:24:57.217 回答