【发布时间】:2014-07-04 10:17:06
【问题描述】:
我构建了一个静态库。问题是我无法从我的 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
一切都按原样编译。有人能帮我吗?
【问题讨论】:
标签: c linux gcc makefile static-libraries