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!
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
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
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
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 .
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.