Linux Makefile搜索库文件

Linux Makefile搜索库文件,linux,makefile,lapack,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_INTERFA

在包含一些库的辅助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
之前有很多行,但我省略了


我该怎么办?

链接器找不到名为
liblapack\u LINUX.a
liblapack\u LINUX.so
的文件。您需要直接用鼠标指向该文件

LAPACK_LIBS=/export/apps/computer/lapack-3.2/lapack_LINUX.a
可以删除
LDFLAGS
变量


如果库未被称为
libblas.a
libblas.so
,则可能也必须以这种方式链接BLAS库。链接的顺序也可能很重要。LAPACK之前的BLAS。

当您指定
-lxyz
时,链接器将查找
libxyz.a
libxyz.so
。当您将
xyz
拼写为
lapack\u LINUX
时,链接器甚至不会尝试查找您所说的包含库的文件。是的,我稍后会尝试BLAS。我想知道的是,为什么它不搜索LDFLAGS给出的路径?@mahmood确实是这样,但库本身的名称是错误的。使用
-lmylib
时,链接器查找
libmylib.a
libmylib.so
,而不是
mylib.a
mylib.so