目录
1. make和Makefile的关系
2.Makefile的规则
3.举例应用:
Linux Make file的一个例子
例子:一个工程f由5个文件构成,f分别是main.c、max.h、min.h、max.c、min.c
¡makefile的具体内容如下:
1. make和Makefile的关系
•make是系统的一个程序(/usr/bin/make)
•Makefile是规则的文件
•make就是去解析Makefile的文件来执行相关的命令
•( Makefile有三种命名形式: Makefile, makefile, GNUMakefile )
2.Makefile的规则
•target ... : prerequisites ...
• command
• ...
• ...
• target 也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
• prerequisites就是,要生成那个target所需要的文件或是目标。
• command也就是make需要执行的命令。(任意的Shell命令)
也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。
3.举例应用:
一个简单的C程序(hello.c和foo1.c):
#include /* hello.c */ #include /* foo1.c */
extern int foo1(void); int foo1(void) {
int main(void) { printf(“print foo1\n”);
foo1(); } }
通常的Makefile格式:
all: hello@echo "Finish to build hello“hello : hello.o foo1.ogcc -o hello hello.o foo1.ohello.o : hello.cgcc -c -o hello hello.cfoo1.o : foo1.cgcc -c -o foo1.o foo1.cclean:rm -rf *.o hello
注意:1. 变量myname使用$( )表示
2.任何命令必须以Tab键开始。
3.@表示后面的命令不要显示出来 例如:@echo “Begin to build hello“
Linux Make file的一个例子
* Make命令是Unix(Linux)下重要的编译命令。
* 在make命令执行之前,需要一个makefile文件,用它来告诉make命令如何对每一个源程序进行编译和链接。
例子:一个工程f由5个文件构成,f分别是main.c、max.h、min.h、max.c、min.c
/* main.c */#include "max.h"#include "min.h"int main(int argc,char **argv){int a=10,b=20;printf("the max value is %d\n",max(a,b));printf("the min value is %d\n",min(a,b));}/* max.h */ /* max.c */#ifndef _MAX_H #include "max.h"#define _MAX_H int max(int x,int y)int max(int x,int y); {#endif return x>y?x:y; }/* min.c */ /* min.h */#include "min.h" #ifndef _MIN_Hint min(int x,int y) #define _MIN_H{ int min(int x,int y);return x
¡makefile的具体内容如下:
l# 这是上面程序的 Makefile文件
lmain :main.o max.o min.olgcc -o main main.o max.o min.olmain.o:main.c max.h min.hlgcc -c main.clmax.o :max.c max.hlgcc -c max.clmin.o :min.c min.hlgcc -c min.clclean:lrm -f *.olrm -f *~
希望对你有帮助。