Не удалось установить CBLAS на Ubuntu

Я пытаюсь установить 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 не предположен быть автономным? Почему это даже показывает такие неопределенные ссылки?

Спасибо за чтение и для любых предложений!

2
задан 25 November 2016 в 18:48

2 ответа

Измените переменную 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

Ответьте, если вам удалось его скомпилировать.

0
ответ дан 25 November 2016 в 18:48

Рекомендуемый метод должен установить CBLAS как часть lapack, ATLAS или OpenBLAS. Для полных инструкций можно видеть здесь

  1. Необходимо сначала установить BLAS любой sudo apt-get install libblas-dev или путем компиляции исходной реализации:

    1.1. загрузите последнюю версию BLAS из http://www.netlib.org/blas/

    1.2. разархивируйте и перейдите к папке в терминале и работайте, делают

    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 папке и работайте, делают

  3. ищите cblas.h файл во включать папке и когда Вы захотите скомпилировать ссылку gcc против этой папки

Инструкции отсюда. При взгляде примеров CBLAS можно проверить здесь.

1
ответ дан 25 November 2016 в 18:48

Другие вопросы по тегам:

Похожие вопросы: