无法在 Ubuntu 上安装 CBLAS

无法在 Ubuntu 上安装 CBLAS

我正在尝试在 Ubuntu 上安装 CBLAS,据我所知,我按照文件夹中的 README 文件中的说明进行操作。当我执行“make all”时,我收到以下我无法理解的错误:

make[1]: Entering directory `/home/ubuntu/ernieProject_C/pascalInpaintCodes/CBLAS/t                                                                                                             esting'
gfortran  -o xscblat1 c_sblat1.o c_sblas1.o ../lib/cblas_LINUX.a ../lib/cblas_LINUX                                                                                                             .a
../lib/cblas_LINUX.a(cblas_srotg.o): In function `cblas_srotg': cblas_srotg.c (.text+0x1): undefined reference to `srotg_'
../lib/cblas_LINUX.a(cblas_srot.o): In function `cblas_srot':cblas_srot.c:(.text+0x3b): undefined reference to `srot_'
../lib/cblas_LINUX.a(cblas_sswap.o): In function `cblas_sswap':cblas_sswap.c:(.text+0x21): undefined reference to `sswap_'
../lib/cblas_LINUX.a(cblas_sscal.o): In function `cblas_sscal':cblas_sscal.c:(.text+0x25): undefined reference to `sscal_'
../lib/cblas_LINUX.a(cblas_scopy.o): In function `cblas_scopy':cblas_scopy.c:(.text+0x21): undefined reference to `scopy_'
../lib/cblas_LINUX.a(cblas_saxpy.o): In function `cblas_saxpy':cblas_saxpy.c:(.text+0x2f): undefined reference to `saxpy_'
../lib/cblas_LINUX.a(sdotsub.o): In function `sdotsub_':sdotsub.f:(.text+0x7): undefined reference to `sdot_'
../lib/cblas_LINUX.a(snrm2sub.o): In function `snrm2sub_':snrm2sub.f:(.text+0x7): undefined reference to `snrm2_'
../lib/cblas_LINUX.a(sasumsub.o): In function `sasumsub_':sasumsub.f:(.text+0x7): undefined reference to `sasum_'
../lib/cblas_LINUX.a(isamaxsub.o): In function `isamaxsub_':isamaxsub.f:(.text+0x7): undefined reference to `isamax_'
../lib/cblas_LINUX.a(scasumsub.o): In function `scasumsub_':scasumsub.f:(.text+0x7): undefined reference to `scasum_'
../lib/cblas_LINUX.a(scnrm2sub.o): In function `scnrm2sub_':scnrm2sub.f:(.text+0x7): undefined reference to `scnrm2_'
collect2: ld returned 1 exit status
make[1]: *** [xscblat1] Error 1
make[1]: Leaving directory `/home/ubuntu/ernieProject_C/pascalInpaintCodes/CBLAS/te                                                                                                             sting'
make: *** [alltst] Error 2

这是 Makefile.in。我根据说明对其进行了微小的修改。如下所示:

#
# Makefile.LINUX
#
#
# If you compile, change the name to Makefile.in.
#
#

#-----------------------------------------------------------------------------
# Shell
#-----------------------------------------------------------------------------

SHELL = /bin/sh

#-----------------------------------------------------------------------------
# Platform
#-----------------------------------------------------------------------------

PLAT = LINUX

#-----------------------------------------------------------------------------
# Libraries and includes
#-----------------------------------------------------------------------------

BLLIB = ../lib/cblas_LINUX.a
CBLIB = ../lib/cblas_$(PLAT).a

#-----------------------------------------------------------------------------
# Compilers
#-----------------------------------------------------------------------------

CC = gcc
FC = gfortran
LOADER = $(FC)

#-----------------------------------------------------------------------------
# Flags for Compilers
#-----------------------------------------------------------------------------

CFLAGS = -O3 -DADD_
FFLAGS = -O3

#-----------------------------------------------------------------------------
# Archive programs and flags
#-----------------------------------------------------------------------------

ARCH = ar
ARCHFLAGS = cr
RANLIB = ranlib

我在这里修改的行是

 BLLIB = ../lib/cblas_LINUX.a

我只是更改了路径。现在 ../lib 中有一个 cblas_LINUX.a,所以我认为这是正确的。

请指出我为什么会收到这些错误,这真的很有帮助。CBLAS 不是应该是自包含的吗?为什么它甚至会显示这样的未定义引用?

感谢您的阅读和任何建议!

答案1

推荐的方法是将 CBLAS 作为 lapack、ATLAS 或 OpenBLAS 的一部分进行安装。有关完整说明,您可以查看这里

  1. 您需要首先通过sudo apt-get install libblas-dev或编译原始实现来安装 BLAS:

    1.1. 从以下网址下载最新版本的 BLAShttp://www.netlib.org/blas/

    1.2. 解压并进入终端中的文件夹并运行 make

    1.3.查找名为的文件blas_LINUX.a并将地址保存到此文件中

  2. 编译 netlib cblas:

    2.1. 从同一页面下载 CBLAS

    2.2.取消存档

    2.3.打开文件Makefile.in

    2.4. 查找行BLLIB = .../blas_LINUX.a

    2.5. 在这里输入你在第一步中得到的地址

    2.6. 进入解压后的 cblas 文件夹中的终端并运行 make

  3. 在包含文件夹中查找 cblas.h 文件,当你想编译链接 gcc 时,请针对此文件夹

来自的指示这里。如果要查看 CBLAS 示例,您可以查看这里

答案2

我尝试按照 Foad 的说明进行操作,并认为我接近成功,但最终无法让程序识别我已经安装了 CBLAS。

我最终看到了对这个问题,这让我找到了立即有效的解决方案,只需从预先存在的包中安装它即可。

sudo apt install libopenblas-dev

我希望你提出这个问题八年后仍然觉得这个答案有用。

答案3

将变量 BLLIB 更改为动态的位置拉帕克图书馆。

如果您不知道,可以使用以下命令查找:

locate liblapack

如果你已经正确安装,你应该可以在

/usr/lib/liblapack.a
/usr/lib/liblapack.so

因此,请进行以下更改,

BLLIB=/usr/lib/

然后就可以执行下面一组命令来编译。

rm Makefile.in
ln -s Makefile.LINUX Makefile.in
make all

如果您能够成功编译,请回复。

相关内容