您的位置:首页 > 其它

Makefile简单使用的例子

2016-10-09 17:46 190 查看


Makefile简单使用的例子

首先,向大家解释一下Makefile,在使用Make程序自动编译所有的内核代码文件,就必须有一个名称为Makefile(或makefile)的文件。这个文件的名字可以有别的写法,需要利用make的“-f “或“–file”参数,例如:make -f hello,但一般不提倡使用其他命名。

Makefile里面主要包含5个元素: 

1、显式规则 

说明如何生成一个或多个目标文件,包括要生成的文件,文件的依赖文件,生成的命令。 

2、隐含规则 

make程序具有自动推导的功能,利用隐含规则可以简略地书写Makefile文件。 

3、变量的定义 

变量一般为字符串,类似于C语言中的宏(#define),当Makefile被执行时,其中的变量会被扩展到引用的位置上。 

4、文件指示 

①在一个Makefile中引用另一个Makefile,就像C语言中的include一样。 

②根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样。 

③定义一个多行的命令。 

5、注释 

仅有行注释,字符:#,就像C语言中的//一样。

Makefile里的主要规则: 

1、基本格式 

target(目标):prerequisites(先决条件) 

command(命令) 

2、文件的依赖关系 

target是需要生成的一个或多个文件,它们依赖于 prerequisites中列出的文件,通过执行command来生成target。 

3、一个规则可以有多个命令行,每一条命令占一行。 

注意:每一个命令行必须以[Tab]字符开始,[Tab]字符告诉 make 此行是一个命令行。

Make程序的适用场合是多个文件组成的软件项目。

下面以一个简单的hello world程序为例进行说明: 
Makefile文件内容:
helloworld:hello.o main.o
gcc hello.o main.o -o hello
main.o:main.c hello.h
gcc -c main.c -o main.o
hello.o:hello.c
gcc -c hello.c -o hello.o
clean:
rm -rf *.o helloworld


特别注意:执行命令之前一定要使用Tab键,而不能使用几个空格代替,不然会出现编译错误。[Tab]字符告诉 make 此行是一个命令行。 

hello.h :
int hello (void); //声明函数


hello.c :
#include <stdio.h>
int hello (void)
{
printf(" Hello world!\n");
return 0;
}


main.c :
#include "hello.h"
int main(void)
{
return hello();
}


文件编写完成之后,直接在linux的命令窗口执行make命令即可。

文章难免有不足之处,要是有错误的地方大家就凑活看吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Makefile make程序