由于项目需要,在网上随便看了一下后,记录一下我对目前掌握的makefile理解。
gcc -o a a.c
我们上面,命令行为原型对makefile编译进行深入讲解。上面命令行可以拓展为下面的makefile:
CC=gcc #如果非环境变量,需要指明路径;例如:CC=/home/croos/bin/gcc
CFLAGS = -Wall
DEFINE =
INCLUDE = -I.
TARGET = filename #要生成的最终目标,如:可执行程序
SUORCES += $(wildcard *.c) #要编译的目标文件
OBJS = $(patsubst %.c,%.o,$(SOURCES))
LIBS += -l1 -l2 ...
All:$(OBJS)
$(CC) -o $(PROGRAM) $(OBJS) $(LIBS) #链接所有文件
%.o:%.c
$(CC) -c $(CFLAGS_WARN) $(DEFINE) $(INCLUDE) $< -o $@
clean:
rm -f $(OBJS)
rm -f $(TARGET)
这样可以引入第三方库。
总的来说就是在基本的目标命令行之后加入要链接的库。如下:
gcc a a.c -l1 #-l1为编译a.c为a文件时所需要的库