编译器:gcc
编译环境:linux
文件夹:inc---存放头文件.h,src---存放原文件.c,lib---存放静态文件.a,obj---存放目标文件.o 在当前目录PATH下,主函数为main.c
步骤:预编译 ---> 编译 ---> 汇编 ---> 链接
通俗来讲就是先将原文件编译成目标文件,再将目标文件链接生成可执行程序,linux中是.out形式,如windows的.exe文件一样
具体makefile编写如下:使用隐含规则 $@ ,$<, $^
1,生成目标文件*.o
CC = gcc
CFLAGS =-g -I $(PATH) / inc
$(PATH) /obj/ %.o : $(PATH) /src/ %.c
$(CC) $(CFLAGS) -c -o $@ $<
生成的目标文件.o在obj文件夹下
2,生成静态文件*.a 和动态文件*.so
TARGET = $(PATH) / lib /*.a 如libtest.a
all : $(TARGET)
$(TARGET) : $(PATH)/obj / *.o
$(AR) $@ $^
生成的静态文件.a在lib文件夹下
TARGET = $(PATH)/lib/*.so
all : $(TARGET)
$(TARGET) : $(PATH)/obj/*.o
$(CC) -fPIC -shared -o libtest.so
3,链接成可执行文件*.out
EXEFILE = $(PATH) / *.out
all: $(EXEFILE)
$(EXEFILE):
$(CC) -o main main.c -L$(PATH)/lib -ltest
即可生成可执行文件main.out