Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Makefile 在Linux上使用Fortan90中的Blas和Lapack库_Makefile_Fortran_Gfortran_Lapack_Blas - Fatal编程技术网

Makefile 在Linux上使用Fortan90中的Blas和Lapack库

Makefile 在Linux上使用Fortan90中的Blas和Lapack库,makefile,fortran,gfortran,lapack,blas,Makefile,Fortran,Gfortran,Lapack,Blas,我试图在LinuxMint上的Fortran90代码中使用Lapack和Blas库。我相信我已在以下目录中正确安装了这两个库:/usr/local/lib 当我使用makefile编译代码时,会收到错误消息: gfortran -m64 -O3 -fdefault-real-8 -fdefault-double-8 -c MainHPC2.f90 gfortran -m64 MainHPC2.o Central2Scheme.o Central5Scheme.o WriteData

我试图在LinuxMint上的Fortran90代码中使用Lapack和Blas库。我相信我已在以下目录中正确安装了这两个库:/usr/local/lib 当我使用makefile编译代码时,会收到错误消息:

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
我的Fortran代码只是尝试调用一个测试函数:

call dgesv(nn,nrhsl,al,ldal,ipivl,xl,ldbl,infol)
我使用的makefile如下所示: 我认为它没有正确地链接到图书馆

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
FC=gfortran
FFLAGS=-m64-O3-fdefault-real-8-fdefault-double-8
目标拱门=
LDFLAGS=-m64
BLIBS=-L/usr/local/lib-llapack-lblas
EXE=P1
.后缀:
.后缀:.o.f90.plt
SRC=\
MainHPC2.f90\
Central2Scheme.f90\
Central5Scheme.f90\
WriteDataFiles.f90\
$(对象):
OBJ=${SRC:.f90=.o}
$(EXE):$(OBJ)
$(FC)$(LDFLAGS)$(OBJ)$(LIBS)-o$(EXE)
%.o:%.f90
$(FC)$(FFLAGS)-c$<
#定义模块的依赖项
#$(OBJ):$(国防部)
清洁:
rm-f*.mod*~核心
rm-f*.o
谢谢你的帮助

Alex解决方案1

在makefile中,编译和链接的部分从不将包含BLAS和LAPACK库的
$(BLIBS)
添加到链接过程中

$(EXE): $(OBJ)
    $(FC) $(LDFLAGS) $(OBJ) $(LIBS) $(BLIBS) -o $(EXE)
解决方案2

或者您输入了一个拼写错误并编写了
BLIBS
,而不是
LIBS

LIBS = -L/usr/local/lib -llapack -lblas
注意:这与其说是回答,不如说是评论