makefile是为了方便用户在linux操作系统下进行规模较大的源代码文件的编译而定制的一种文件类型。
由于linux操作系统的编译由用户自行逐个对文件进行编译——.c》.o连接——.hex/.exe》可执行文件比较麻烦,输入指令时也需要一行一行的输入,而makefile实现了通过一定的规则将这些编译指令集成一个文件,用户只需使用make file 便可一键生成可执行文件。
现讲讲makefile语法,
先讲讲这里面
预定义变量:
CC:C编译器的名字,无默认值[因此在使用时要指定CC=gcc]
CFLAG: C编译器的选项,无默认值[因此在使用要指定CFLAG=- Wall -O -g]
自动变量:
$*:除去拓展名的目标文件
$<:列出依赖的第一个
$^:依次列出所有的依赖(即要生成目标的材料)
$@:列出目标
$?:列出所有时间搓比现目标要晚的依赖文件
make指令的使用:
-C:读入指定目录的Makefile
-i:忽略所有的命令执行错误
-I:包含源文件中include 的文件所在目录
规则:
target : source
tab command
结合以上的语法再结合一些bash的使用基本就能编写Makefile了
如:
CC := gcc
CFLAG := - Wall -O -g
OBJ := hello.o print.o cat.o
hello : $OBJ
[tab]CC $CFLAG $^ -o $@#隐晦规则
%o : %c#模式规则
[tab]CC $CFLAG -c $
语法:
obj-m := file.o
将file.o编译成模块。