make工具-用于GeekOS课设

make工具简介

无论是在Linux还是在UNIX环境中,make都是一个非常重要的系统开发工具。利用make工具,可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。 make能够按照规则自动完成编译工作,并且可以只对程序员在上次编译后修改过的文件进行编译,减少重复编译的工作量。 它就是字符操作方式下的项目管理工具。

makefile文件内容

Make文件包含五方面的内容,即具体规则、隐含规则、宏定义、指令和注释。下面分别对它们进行说明:

1、具体规则:用于阐述什么时间或怎样重新生成称为规则目标的一个或多个文件。

2、隐含规则:用于阐述什么时间或怎样重新生成同一个文件名的一系列文件。

3、宏宏定义:为一个宏赋一个固定的字符串值,从而在以后的文件中能够用该宏代替这个字符串。

4、指令:make根据makefile文件执行一定任务的命令。
(1)读其它makefile文件(如果包括)。
(2)根据变量的值判定是否使用或忽略makefile文件的部分内容。
(3)定义多行变量,即定义变量值可以包含多行字符的变量。

5、以“#”开始的行是注释行,注释行在处理时将被make命令忽略,

MakeFile规则

targets … : dependencys …
command


targets是一个目标文件或一组目标文件,可以是中间目标文件,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在下面会有解释。

dependencys就是用来说明要生成对应targets所需要的文件或是目标,即由哪些源文件来生成targets。

command就是make需要执行的命令(任意的Shell命令),每一个命令必须以Tab键开始,不能用空格符号替代。它是用来说明如何生成targets。

每一次执行make命令时,如果dependencys中有一个以上的文件比target文件要新的话,command所定义的命令就会被系统执行,否则表示目标文件原来已经生成,并且是最新的,command命令不再执行。

make工作原理

在默认的方式下,只要输入make命令就可以工作。具体的处理过程如下:

(1)make会在当前目录下找文件名为“Makefile”或“makefile”的文件。

(2)如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,它会找到“edit”这个文件,并把这个文件作为最终的目标文件。

(3)如果edit文件不存在,或是edit所依赖的后面的.o文件的修改时间要比edit这个文件新,那么,就会执行后面所定义的命令来生成edit这个文件。

(4)如果edit所依赖的.o文件也不存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件(这有点像一个堆栈的过程)。

(5)如果指定的C文件和H文件是存在的, make会生成.o文件,然后再用.o文件生成make的最终任务,也就是链接生成执行文件edit。

GeekOS的makefile文件功能

在GeekOS中, makefile文件具体功能如下:
①指定GeekOS如何被编译,哪些源文件被编译,哪些用户程序被编译等等。通常不同项目的编译仅仅需要修改这一部分。
②定义了编译GeekOS要用到的工具程序。
③指定规则:描述系统如何编译源程序。
④指定系统编译生成的指定文件 。

命令举例

1.make

根据makefile制定的规则,将c\c++文件编译成*.o文件,然后进一步生成可执行文件。

2.make clean

删除源代码(C\C++ code)生成的执行文件和所有的中间目标文件。

3.make depend

一种makefile的规则,通过扫描仪个目录下的所有C\C++ 代码,从而判断出文件之间的依赖关系,如a.c文件中调用了b.h(如以形式include

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值