Использование библиотек Blas и Lapack в Fortan90 в Linux - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь использовать библиотеки Lapack и Blas в своем коде Fortran90 на Linux Mint.Я считаю, что я правильно установил обе библиотеки в следующем каталоге: / usr / local / lib Когда я компилирую свой код с использованием make-файла, я получаю сообщение об ошибке:

gfortran -m64 -O3 -fdefault-real-8 -fdefault-double-8  -c MainHPC2.f90
gfortran -m64  MainHPC2.o Central2Scheme.o Central5Scheme.o     
WriteDataFiles.o  -o P1    
MainHPC2.o: In function `MAIN__':
MainHPC2.f90:(.text+0x2b0): undefined reference to `dgesv_'
collect2: error: ld returned 1 exit status
makefile:56: recipe for target 'P1' failed
make: *** [P1] Error 1

Мой код на Фортране просто пытается вызватьтестовая функция:

call dgesv(nn,nrhsl,al,ldal,ipivl,xl,ldbl,infol)

Используемый мной make-файл выглядит следующим образом: Я считаю, что он неправильно связывается с библиотеками.

FC = gfortran
FFLAGS = -m64 -O3 -fdefault-real-8 -fdefault-double-8 
TARGET_ARCH =
LDFLAGS = -m64 
BLIBS = -L/usr/local/lib -llapack -lblas
EXE = P1

.SUFFIXES:      
.SUFFIXES: .o .f90 .plt

SRC =           \
   MainHPC2.f90  \
   Central2Scheme.f90 \
   Central5Scheme.f90 \
   WriteDataFiles.f90 \



$(OBJECTS):
OBJ = ${SRC:.f90=.o}

$(EXE): $(OBJ)
    $(FC) $(LDFLAGS) $(OBJ) $(LIBS) -o $(EXE)

%.o  : %.f90 
    $(FC) $(FFLAGS) -c $<

# Define dependencies for modules
# $(OBJ): $(MOD)

clean: 
    rm -f *.mod *~ core
    rm -f *.o

Спасибо за помощь.

Алекс

1 Ответ

0 голосов
/ 10 октября 2018

решение 1

В вашем make-файле разделы, которые компилируются и связываются, никогда не добавляют $(BLIBS), который содержит библиотеки BLAS и LAPACK, в процесс компоновки.

$(EXE): $(OBJ)
    $(FC) $(LDFLAGS) $(OBJ) $(LIBS) $(BLIBS) -o $(EXE)

решение 2

или вы сделали опечатку и написали BLIBS вместо LIBS,

LIBS = -L/usr/local/lib -llapack -lblas

примечание: Это должен быть больше комментарий, чем ответ

...