文档详情

1506-Linux操作系统基础资料.ppt

发布:2016-10-15约2.08万字共73页下载文档
文本预览下载声明
make的工作原理 Linux操作系统基础 设有一项目由以下文件构成: 源程序: main.c mytool1.c mytool2.c 头文件: mytool1.h mytool2.h 目标文件: main.o mytool1.o mytool2.o 可执行文件: tool mytool1.h mytool2.h main.c main.o mytool1.h mytool1.c mytool1.o tool mytool2.h mytool2.c mytool2.o Makefile的基本规则 Linux操作系统基础 Makefile定义了一系列的规则来指定文件的编译顺序,哪些文件需要重新编译,还可以执行操作系统的命令。 目标-关连-动作组成的一连串规则 #REMARK TARGET…:PREREQUISITES… …… Tab COMMAND …… 规则的目标 通常是最后需要生成文件的文件名 或是为了实现这个目的而必需的中间过程文件名 规则的依赖 生成规则目标所需要的文件名列表 注释 规则的命令行 shell命令或是可在shell下执行的程序 Makefile文件规则的例子: Linux操作系统基础 #Makefile Example tool : main.o mytool1.o mytool2.o Tab gcc –o tool main.o mytool1.o mytool2.o main.o : main.c mytool1.h mytool2.h Tab gcc –c main.c mytool1.o: mytool1.c mytoole1.h Tab gcc –c mytools1.c mytool2.o: mytool2.c mytoole2.h Tab gcc –c mytools2.c clean : rm –f tool *.o 伪目标 当参数较多,一行不能容下时,可用续行符\,但注意续行符后不能有空格。 当执行:make clean 时,伪目标中的指令被执行 Makefile文件中可以使用变量,或称作宏。 Linux操作系统基础 变量要在文件顶部,行的开头定义,且习惯使用大写字符。 定义:变量名=变量值 …(各变量值以空格区分) 引用:$(变量名) (当变量名只有一个字符时,可省略括号) #Makefile Example OBJ = main.o mytool1.o mytool2.o CC = gcc EXEC = tool $(EXEC) : $(OBJ) Tab $(CC) –o $(EXEC) $(OBJ) main.o : main.c mytool1.h mytool2.h Tab $(CC) –c main.c mytool1.o: mytool1.c mytoole1.h Tab $(CC) –c mytools1.c mytool2.o: mytool2.c mytoole2.h Tab $(CC) –c mytools2.c clean : rm –f tool *.o 在Makefile文件中变有几个经常使用的自动变量 Linux操作系统基础 $@ —— 代表目标文件 $^ —— 代表所有的依赖文件 $ —— 代表该目标的第一个依赖文件 $* —— 代表已删除后缀的目标文件 #Makefile Example OBJ = main.o mytool1.o mytool2.o CC = gcc EXEC = tool $(EXEC) : $(OBJ) Tab $(CC) –o $@ $^ main.o : main.c mytool1.h mytool2.h Tab $(CC) –c $ mytool1.o: mytool1.c mytoole1.h Tab $(CC) –c $ mytool2.o: mytool2.c mytoole2.h Tab $(CC) –c $ clean : rm –f $(EXEC) *.o 使用变量后,给编译带来了很大的灵活性 Linux操作系统基础 #Makefile Example OBJ = main.o mytool1.o mytool2.o CC = gcc EXEC = tool $(EXEC) : $(OBJ) Tab $(CC) –o $
显示全部
相似文档