我构建了一个静态库.问题是我无法从我的Makefile链接它
TARGET = AR1020 CC = gcc CFLAGS = -Wall -std=c99 -I./inc/ LINKER = gcc -o LFLAGS = -Wall -static -I./inc/ SRCDIR = src INCDIR = inc OBJDIR = obj BINDIR = bin LIBDIR = ./lib LIBFLAG = -li2c SOURCES := $(wildcard $(SRCDIR)/*.c) INCLUDES := $(wildcard $(INCDIR)/*.h) OBJECTS := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o) rm = rm -f $(BINDIR)/$(TARGET): $(OBJECTS) @$(LINKER) $@ $(LFLAGS) -L$(LIBDIR) $(LIBFLAG) $(OBJECTS) @echo "Linking complete!" $(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c @$(CC) $(CFLAGS) -c $< -o $@ @echo "Compiled "$<" successfully" .PHONY: clean clean: @$(rm) $(OBJECTS) @echo "Cleanup complete!" .PHONY: remove remove: clean @$(rm) $(BINDIR)/$(TARGET) @echo "Exacutable removed!"
我的树是:
|-- bin |-- inc | |-- color.h | |-- EXT.h | |-- EXT.h~ | |-- gpio_lib.h | `-- test.h |-- lib | |-- i2c.c | |-- i2c.o | `-- libi2c.a |-- Makefile |-- obj | |-- AR1020.o | |-- gpio_lib.o | |-- gpio.o | `-- test.o `-- src |-- AR1020.c |-- gpio_lib.c `-- libi2c.a
我想链接libi2c.a,但我收到错误"未定义引用'.....'.如果我手动编译它,如:
gcc src/AR1020.c lib/libi2c.a
一切都按照应有的方式进行编译.有人能帮我吗?