Я создаю статическую библиотеку, которая содержит несколько объектов, включая тот, который зависит от sqlite3.Это мой файл make;он в основном скомпилировал 3 файла cpp в объекты, поместил их в .a lib и затем использовал эту библиотеку, чтобы получить мой основной двоичный файл
CPPSRCS := \
$(LIBDIR)/database/active_database.$(SRCEXT) \
$(LIBDIR)/sd_card/sd_card.$(SRCEXT) \
$(LIBDIR)/led/led.$(SRCEXT)
OBJS := $(CPPSRCS:.cpp=.o)
lib/%.o: %.$(SRCEXT)
$(CXX) $(CXXFLAGS) -c $^ -o $@ -lsqlite3
lib_$(APP).a: $(OBJS)
$(AR) rcs lib_$(APP).a $(OBJS)
$(APP): lib_$(APP).a
$(CXX) $(CXXFLAGS) $(SRCDIR)/$@.$(SRCEXT) -o $(DESTDIR)/$@ lib_$(APP).a
Моя статическая библиотека создается, но при попытке получить мой двоичный файл против нееЯ получаю неопределенную ссылку:
lib_XX.a(active_database.o): In function `database::ActiveDatabase::sqlite_exec_wrapper(std::string, int (*)(void*, int, char**, char**), void*)':
database/active_database.cpp:174: undefined reference to `sqlite3_exec'
database/active_database.cpp:178: undefined reference to `sqlite3_free'
lib_XX.a(active_database.o): In function `database::ActiveDatabase::init_db()':
Я вижу, что -lsqlite3 (в / usr / lib) не включен в компиляцию, но я не могу заставить ее быть включенной при сборке статического кода.библиотека.