Я пытаюсь установить CBLAS на Ubuntu и, насколько я вижу, следуя инструкциям в файле README, который прибыл в папку. Когда я делаю, 'делают все', я получаю следующие ошибки, которые я просто не понимаю:
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
Я просто изменил путь. И теперь СУЩЕСТВУЕТ cblas_LINUX.a в../освобождать, так, чтобы был, я думаю, корректный.
Любые указатели на то, почему я получаю эти ошибки, были бы действительно полезны. Разве CBLAS не предположен быть автономным? Почему это даже показывает такие неопределенные ссылки?
Спасибо за чтение и для любых предложений!
Измените переменную BLLIB на местоположение вашей динамической библиотеки lapack .
Если вы не знаете об этом, вы можете узнать с помощью следующих команд:
locate liblapack
Если вы правильно установили его, вы должны найти его в
/usr/lib/liblapack.a
/usr/lib/liblapack.so
[ 118] Поэтому внесите следующие изменения:
BLLIB=/usr/lib/
Затем вы можете выполнить следующий набор команд для компиляции.
rm Makefile.in
ln -s Makefile.LINUX Makefile.in
make all
Ответьте, если вам удалось его скомпилировать.
Рекомендуемый метод должен установить CBLAS как часть lapack, ATLAS или OpenBLAS. Для полных инструкций можно видеть здесь
Необходимо сначала установить BLAS любой sudo apt-get install libblas-dev
или путем компиляции исходной реализации:
1.1. загрузите последнюю версию BLAS из http://www.netlib.org/blas/
1.2. разархивируйте и перейдите к папке в терминале и работайте, делают
1.3. ищите названный файл blas_LINUX.a
и сохраните адрес в этот файл
скомпилируйте netlib cblas:
2.1. загрузите CBLAS с той же страницы
2.2. разархивировать
2.3. откройте файл Makefile.in
2.4. ищите строку BLLIB = .../blas_LINUX.a
2.5. поместите адрес, который Вы имели на шаге один здесь
2.6. перейдите к терминалу в разархивированной cblas папке и работайте, делают
ищите cblas.h файл во включать папке и когда Вы захотите скомпилировать ссылку gcc против этой папки
Инструкции отсюда. При взгляде примеров CBLAS можно проверить здесь.