web-dev-qa-db-fra.com

Impossible d'installer CBLAS sur Ubuntu

J'essaie d'installer CBLAS sur Ubuntu et, autant que je sache, je suis les instructions du fichier README fourni dans le dossier. Quand je fais un 'make all', j'obtiens les erreurs suivantes que je ne comprends tout simplement pas:

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

Voici le Makefile.in. Je l'ai modifié un peu, selon les instructions. C'est ici:

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

La ligne que j'ai modifiée ici était

 BLLIB = ../lib/cblas_LINUX.a

Je viens de changer le chemin. Et maintenant, il y a IS un cblas_LINUX.a dans ../lib, donc c’est, je pense, correct.

S'il vous plaît, toute indication sur la raison pour laquelle je reçois ces erreurs serait vraiment utile. CBLAS n'est-il pas censé être autonome? Pourquoi montre-t-il même de telles références indéfinies?

Merci de votre lecture et de vos suggestions!

2
user1096863

La méthode recommandée consiste à installer CBLAS dans le cadre de lapack, ATLAS ou OpenBLAS. Pour des instructions complètes, vous pouvez voir ici

  1. Vous devez d’abord installer BLAS soit par Sudo apt-get install libblas-dev, soit en compilant l’implémentation originale:

    1.1. téléchargez la dernière version du BLAS depuis http://www.netlib.org/blas/

    1.2. désarchiver et aller dans le dossier du terminal et lancer make

    1.3. cherche le fichier nommé blas_LINUX.a et enregistre l'adresse dans ce fichier

  2. compilez les cblas netlib:

    2.1. télécharger CBLAS à partir de la même page

    2.2. désarchiver

    2.3. ouvrez le fichier Makefile.in

    2.4. cherche la ligne BLLIB = .../blas_LINUX.a

    2.5. mettez l'adresse que vous aviez à la première étape ici

    2.6 allez au terminal dans le dossier cblas décompressé et lancez make

  3. cherchez le fichier cblas.h dans le dossier include et lorsque vous voulez compiler le lien gcc avec ce dossier

Instructions de ici . Si vous cherchez des exemples CBLAS, vous pouvez vérifier ici .

1
Foad

Remplacez votre variable BLLIB par l’emplacement de votre bibliothèque dynamique lapack.

Au cas où vous ne le sauriez pas, vous pouvez le savoir en utilisant les commandes suivantes:

locate liblapack

Si vous l'avez installé correctement, vous devriez le trouver dans

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

Alors apportez les modifications suivantes,

BLLIB=/usr/lib/

Ensuite, vous pouvez exécuter le jeu de commandes suivant pour compiler.

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

Répondez si vous avez réussi à le compiler.

0
Priyank