В качестве вспомогательного макияжа файла (с именем arch.make
), который содержит некоторые библиотеки, я написалMakefile ищет файл библиотеки
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
.
Это файл библиотеки действительно существует согласно
[email protected]: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
Однако делает процесс выходит из-за ошибки
......
dc_lapack.a `FoX/FoX-config --libs --wcml` -llapack_LINUX -lblas
/usr/bin/ld: cannot find -llapack_LINUX
collect2: ld returned 1 exit status
Есть много линий до этого, но я пропущенной их.
Что мне делать?
Когда вы указываете '-lxyz', компоновщик ищет' libxyz.a' или 'libxyz.so'. Когда у вас 'xyz' написано' lapack_LINUX', компоновщик даже не пытается найти файл, который вы говорите, содержит библиотеку. –