Я пытаюсь создать очень простой Makefile, который намеревается использовать домашнюю библиотеку (libf904QC.a
) из модулей Fortran. Библиотека находится в /usr/local/lib64
в то время как соответствующие .mod
файлы в /usr/local/include/f904QC
Ошибка в использовании самодельных модулей и библиотек Fortran в Makefile
Вот Makefile
# Makefile
NAME=NPManip
FFLAGS= -ffpe-trap=overflow -c -O3
LFLAGS=
PATH2LIB=/usr/local/lib64/
INCLUDEDIR=/usr/local/include/f904QC/
#
LIB=-L$(PATH2LIB) -I$(INCLUDEDIR) -lf904QC.a
OBJS = \
tools_NPManip.o\
NPManip.o
%.o: %.f90
gfortran $(LIB) $(FFLAGS) $*.f90
NPM: $(OBJS)
gfortran $(LFLAGS) $(OBJS) $(LIB) -o $(NAME)
clean:
@if test -e $$HOME/bin/$(NAME); then \
rm $$HOME/bin/$(NAME); \
fi
rm *.o *.mod
mrproper: clean
rm $(NAME)
install:
ln -s $(shell pwd)/$(NAME) $$HOME/bin/.
Я получаю следующее сообщение об ошибке:
gfortran tools_NPManip.o NPManip.o -L/usr/local/lib64/ -I/usr/local/include/f904QC/ -lf904QC.a -o NPManip
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: cannot find -lf904QC.a
collect2: error: ld returned 1 exit status
make: * [NPM] Erreur 1
Где ошибка? Для меня это не очевидно, так как libf904QC.o
фактически находится в /usr/local/lib64
, что определяется опцией -L
.
Thnak Вас за помощь
Вы пытаетесь связать с объектом 'libf904QC.o' или архив' libf904QC.a'? Попробуйте заменить '-lf904QC.a' полный путь к объекту. – milancurcic