linux - Makefile 搜索库文件

标签 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)

其他变量没问题。请注意在 arch.make 中定义的 $(LIBS)$(LDFLAGS)

根据

那个库文件确实存在
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_LINUX.aliblapack_LINUX.so 的文件。您将需要直接指向文件

LAPACK_LIBS=/export/apps/computer/lapack-3.2/lapack_LINUX.a

LDFLAGS 变量可能会被删除。

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

关于linux - Makefile 搜索库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294206/

相关文章:

c - 链接到多个共享库,这些共享库都链接到一个公共(public)静态库

linux - 从 Windows 服务器读取/写入文件到 HDFS

linux - 在用户提示检查中使用多行 ssh 命令时出现 Shell 错误

c++ - OpenCV 4.x+ 需要启用 C++11 支持编译 darknet fatal error

lapack - 从 lapack 中的 LU 分解计算行列式

c++ - C++ 中的矩阵运算(使用 Blas/Lapack 或其他替代方案)

linux - ld.so 替代品

c++ - 聚合 ‘BIGNUM foo’ 类型不完整,无法定义

c - 如何在 UNIX 中为 C 程序编写 makefile

matlab - 为什么matlab的mldivide比dgels好这么多?