【问题标题】:Using Blas and Lapack libraries in Fortan90 on Linux在 Linux 上的 Fortan90 中使用 Blas 和 Lapack 库
【发布时间】:2018-10-10 14:56:33
【问题描述】:

我正在尝试在 Linux Mint 上的 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

感谢您的帮助。

亚历克斯

【问题讨论】:

    标签: makefile fortran gfortran lapack blas


    【解决方案1】:

    解决方案 1

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

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

    解决方案 2

    或者你写错了BLIBS而不是LIBS,

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

    注意:这应该是评论而不是答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 2015-05-03
      相关资源
      最近更新 更多