Статические библиотеки в Linux (Unix) обычно заканчиваются на '.a
'; общие объекты заканчиваются на '.so
'. Ваше библиотечное правило в настоящее время:
libjimi.so : $(OBJS)
ar rcs $(LIB) $(OBJS)
@echo done!
Должно быть:
$(LIB): $(OBJS)
ar rcs $(LIB) $(OBJS)
@echo done!
Лично я склонен использовать
AR = ar
ARFLAGS = rv
Ведущий к:
$(LIB): $(OBJS)
$(AR) $(ARFLAGS) $(LIB) $(OBJS)
Теперь все аспекты сборки можно настроить, задав макросы - при необходимости.
Не зная, где происходит авария, трудно понять, что может быть причиной.
Одна возможность состоит в том, что из-за путаницы с make-файлом вы связываетесь со старой версией библиотеки, а не с текущей рабочей версией.
Кстати, нехорошо скрывать, что делает цель clean
или purge
; гораздо лучше позволить make
отображать команды (без @
впереди). @
полностью подходит для echo
; его отсутствие приведет к тому, что одна и та же информация будет представлена дважды.