我正在处理一个相当大且混乱的项目,我真的没有时间清理,我的任务是为它提供一个 API。我要做的是将所有丑陋的东西包装在一个静态库中,然后为它提供一个头文件。
但是当尝试使用头文件和库构建可执行文件时,我得到了一堆“未定义的引用”错误。我想如果我提供所有头文件,它会起作用,但我真的不想这样做。
现在makefile
看起来像这样(为简单起见略有改动):
myprog.elf : libgiant_lib.a main.o
gcc -pg -o $@ main.o -lgiant_lib
main.o : main.c
gcc -c $(CFLAGS) $(SOME_INCLUDES) $< -o $@
libgiant_lib.a : $(A_BUNCH_OF_LIBS) $(COUPLE_OF_OBJS) api.o
ar rcs $@ $^
api.o : api.c api.h
gcc -c $(CFLAGS) $(INCLUDES_FOR_BUNCH_OF_LIBS) $< -o $@
我检查了libgiant_lib.a
档案,它似乎包含了它应该包含的所有库和目标文件。但是,链接它仍然不起作用。
我很确定我在这里遗漏了一些明显的东西......