Ну, ваше сообщение об ошибке показывает это:
absolutepath/libbv.a()
без скобок.Но ваш make-файл имеет следующее:
$(LIBZP): $(LIBZP)($(OBJ))
с $(OBJ)
в скобках.Очевидно, что $(OBJ)
расширяется до пустой строки.Почему это так?
Ну, OBJ
устанавливается здесь:
OBJ = $(SRCS:.f=.o)
на основе SRCS
.Ну, что эта переменная содержит?
Ага.Ничего, потому что это никогда не установлено.Вы устанавливаете это, хотя:
SOURCE = \
...
SOURCE
! = SRCS
, поэтому вы модифицируете пустую переменную, а OBJ
- пустая строка.
Я неуверен, почему вы ставите перед префиксом текущий каталог ... вот куда он будет идти по умолчанию, если вы не укажете ни один каталог.В любом случае вы можете использовать $(CURDIR)
вместо запуска $(shell pwd)
.
Если вы все равно собираетесь использовать GNU make, я рекомендую вам использовать правила шаблонов, а не суффиксные правила: они гораздо прощечитать / понимать:
%.o : %.f
$(FC) $(FFLAG) -c $< $@
Также вам не нужно -o
здесь до $@
?Я не использую компиляторы Fortran, но я бы предположил, что они работают более или менее так же, как компиляторы C / C ++.