嵌入式系统
Makefile文件编写
一、实验目的
1、读懂makefile文件,能根据makefile文件理清程序结构
2、能编写简单makefile
二、实验原理
1、makefile
2、make工具
Makefile
Makefile主要包含了五部分:
显式规则
隐含规则
变量
文件指示
注释
显式规则
由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,执行的命令
target ... : prerequisites ... command ...
target:要生成的目标文件
prerequisites:mand:make所要执行的命令(任意的shell命令)
隐含规则
make内部自定义的一些规则。当一个target没有显式的定义生成规则,make寻找一条隐含规则生成该target
例:
foo : bar. -o foo $(CFLAGS) $(LDFLAGS)
,,
变量
变量是在makefile中定义的名字,用来代替一个文本字符串,该文本字符串称为该变量的值
变量的定义
变量名= 值
递归调用扩展型变量
eg:foo = $(bar)
bar=os
变量名:= 值
简单扩展型变量
eg:bar:=os
foo = $(bar)
引用变量时需在前面加上$
变量
变量是在makefile中定义的名字,用来代替一个文本字符串,该文本字符串称为该变量的值
变量的定义
变量名= 值
递归调用扩展型变量
eg:foo = $(bar)
bar=os
变量名:= 值
简单扩展型变量
eg:bar:=os
foo = $(bar)
引用变量时需在前面加上$
缺点:
。如在:
CFLAGS = $(CFLAGS) -O 在变量扩展过程中可能导致无穷循环
,变量一旦展开函数就会立即执行
GNU make的主要预定义变量
$*:去除目标文件扩展名的文件名。,则$*为foo
$+:所有的依赖文件,可能包含重复的文件
$<:第一个依赖文件的名字
$?:修改日期比目标文件的创建日期要晚的依赖文件
$@:目标文件的完整名称
$^:所有的依赖文件,不包含重复的文件
$%:如果目标文件是归档文件,则其表示归档文件的成员名
GNU make的主要预定义变量(续)
AR:归档维护程序的名称,默认值为ar
ARFLAGS:归档维护程序的选项
AS:汇编程序的名称,默认值为as
ASFLAGS::C编译器的名称,
CFLAGS:C编译器的选项
CPP:C预编译器的名称,默认值为$(CC)-E
CPPFLAGS:C预编译器的选项
CXX:C++编译器的名称,默认值为g++
CXXFLAGS:C++编译器的选项
FC:FORTRAN编译器的名称,默认值为f77
FFLAGS:FORTRAN编译器的选项
makefile文件编写 来自淘豆网m.daumloan.com转载请标明出处.