Makefile搜索库文件

时间:2016-07-10 16:45:09

标签: linux makefile lapack

在包含一些库的辅助make文件(名为arch.make)中,我写了

FFLAGS=-g -O2
FPPFLAGS= -DMPI -DFC_HAVE_FLUSH -DFC_HAVE_ABORT
LDFLAGS=-L/export/apps/computer/lapack-3.2

LAPACK_LIBS=-llapack_LINUX
LIBS=$(LAPACK_LIBS)

然后,Makefile包含

siesta: check-siesta what version $(MPI_INTERFACE) $(FDF) $(WXML) $(XMLPARSER) \
            $(COMP_LIBS) $(ALL_OBJS)
    $(FC) -o siesta \
           $(LDFLAGS) $(ALL_OBJS) $(FDF) $(WXML) $(XMLPARSER) $(MPI_INTERFACE)\
           $(COMP_LIBS) $(FoX_LIBS) $(LIBS)

其他变量很好。请注意$(LIBS)中定义的$(LDFLAGS)arch.make

根据

,该库文件确实存在
root@cluster:ObjPar# ls /export/apps/computer/lapack-3.2/lapack_LINUX.a -l
-rw-r--r-- 1 root root 18296682 Jul 10 20:50 /export/apps/computer/lapack-3.2/lapack_LINUX.a

但是,make进程退出时出现以下错误

......
dc_lapack.a `FoX/FoX-config --libs --wcml`   -llapack_LINUX -lblas
/usr/bin/ld: cannot find -llapack_LINUX
collect2: ld returned 1 exit status

之前有很多行,但我省略了它们。

我该怎么办?

1 个答案:

答案 0 :(得分:3)

链接器找不到名为liblapack_LINUX.aliblapack_LINUX.so的文件。您需要直接使用

指向该文件
LAPACK_LIBS=/export/apps/computer/lapack-3.2/lapack_LINUX.a

LDFLAGS变量可能会被删除。

如果未调用库libblas.alibblas.so,您可能也必须以这种方式链接BLAS库。链接的顺序也很重要。在LAPACK之前的BLAS。