I build a static library. The problem is that I can't link it from my 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!"
My tree is:
|-- 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
I want to link libi2c.a but I'm getting the error "undefined reference to '.....'. If I compile it manually like:
gcc src/AR1020.c lib/libi2c.a
Everything compiles as it should be. Can someone help me?