Não é possível instalar o CBLAS no Ubuntu

1

Estou tentando instalar o CBLAS no Ubuntu, e estou, até onde posso ver, seguindo as instruções no arquivo README que veio na pasta. Quando faço um 'make all', recebo os seguintes erros que simplesmente não entendo:

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

Aqui está o Makefile.in. Eu modifiquei um pouquinho, de acordo com as instruções. Aqui está:

#
# 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

A linha que modifiquei aqui foi

 BLLIB = ../lib/cblas_LINUX.a

Eu apenas mudei o caminho. E agora há um cblas_LINUX.a em ../lib, então isso é, eu acho, correto.

Por favor, qualquer indicação de por que estou recebendo esses erros seria realmente útil. CBLAS não é supostamente autocontido? Por que ele mostra essas referências indefinidas?

Obrigado por ler e por qualquer sugestão!

    
por user1096863 17.08.2013 / 21:18

2 respostas

0

Altere sua variável BLLIB para o local de sua biblioteca lapack dinâmica.

Caso você não esteja ciente disso, você pode descobrir usando os seguintes comandos:

locate liblapack

Se você o instalou corretamente, deverá encontrá-lo em

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

Então faça as seguintes alterações,

BLLIB=/usr/lib/

Então você pode executar o seguinte conjunto de comandos para compilar.

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

Responda se você conseguir compilá-lo com sucesso.

    
por Priyank 13.02.2014 / 20:01
0

você precisa instalar o BLAS primeiro:

  1. você precisa ter o BLAS do netlib:

    1.1. baixe a versão mais recente do BLAS aqui: link

    1.2. desarquivar e ir para a pasta no terminal e executar make

    1.3. procure o arquivo chamado blas_LINUX.a e salve o endereço para este arquivo

  2. compile o netlib cblas:

    2.1. baixar CBLAS da mesma página

    2.2. desarquivar

    2.3. abra o arquivo Makefile.in

    2.4. procure a linha BLLIB = ... / blas_LINUX.a

    2.5. coloque o endereço que você tinha no primeiro passo aqui

    2.6. vá para o terminal na pasta cblas descompactada e execute make

  3. procure o arquivo cblas.h na pasta include e quando você deseja compilar o link gcc nessa pasta

fonte: link

O que eu recomendo é que você instale o cblas como parte do lapack. para obter instruções completas, você pode ver aqui

    
por Foad 25.11.2016 / 16:05