码迷,mamicode.com
首页 > 其他好文 > 详细

C指针原理(14)-C指针基础

时间:2018-12-01 15:28:56      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:内容   target   结果   情况   空格   工具   示例   执行文件   否则   

make与makefile

make是一个工具程序(Utility?software),经由读取叫做“makefile”的文件,自动化建构软件。它是一种转化文件形式的工具,转换的目标称为“target”;与此同时,它也检查文件的依赖关系,如果需要的话,它会调用一些外部软件来完成任务。它的依赖关系检查系统非常简单,主要根据依赖文件的修改时间进行判断。大多数情况下,它被用来编译源代码,生成结果代码,然后把结果代码连接起来生成可执行文件或者库文件。

makefile的格式是:

#用“井”号表明注释。

target(要生成的文件):?dependencies(被依赖的文件)

????????#命令前面用的是“tab”而非空格。

????????#误用空格是初学者容易犯的错误!

????????命令1

????????命令2

????????命令3

??????????.

??????????.

??????????.

????????命令n

#可以使用“\”表示续行。注意,“\”之后不能有空格!

target通常是我们要生成的文件的名字,摆放的顺序不重要,但第一个target是默认的target。当make不带参数时,自动执行第一个target。target也可以是要求make完成的动作,执行这种target后并不能得到和target同名的文件,因此,也称为伪target(phony?target)。

dependencies是生成target所需的文件名列表。依赖可以为空,常用的“clean”target就常常没有依赖,只有命令。

命令可以是任何一个shell能运行的命令。

2、makefile示例

我们先以“hello,world”为例,说明makefile的使用。在linux的shell环境中用vim编译hello.c

myhaspl@myhaspl:~/2$?vim?hello.c

在打开的VIM窗口中进行编辑。

#include?<stdio.h>

int?main(void)

{

printf?("hello,world!");

return?0;

}

然后编译,这次一步到位编译完成


myhaspl@myhaspl:~/2$?gcc?hello.c?-o?hello

myhaspl@myhaspl:~/2$?./hello???????????????????????????????????????????????????????????????????????

hello,world!

接着编写makefile文件,实现hello程序的编译自动化。Makefile文件内容如下:

hello:hello.c

????????gcc?hello.c?-o?hello

clean:

????????rm?hello

上面代码中,clean后没有被依赖的文件,因此,不会被make自动执行,这种情况可理解为一种命令。

make依赖关系检查系统非常简单,主要根据依赖文件的修改时间进行判断,如果时间比编译时的时间要新,才重新编译,否则不会重新,如果需要调用make强行重新编译,就需要将编译后的目标文件删除。因此这里定义了clean,当想重新调用make编译hello.c时,可以主动调用make?clean来清除编译。

我们编译,运行后,再使用clean选项清除目标文件,重新编译一次。


myhaspl@myhaspl:~/2$?make

gcc?hello.c?-o?hello

myhaspl@myhaspl:~/2$?./hello

hello,world!

myhaspl@myhaspl:~/2$?make?clean

rm?hello

myhaspl@myhaspl:~/2$?make

gcc?hello.c?-o?hello

myhaspl@myhaspl:~/2$

C指针原理(14)-C指针基础

标签:内容   target   结果   情况   空格   工具   示例   执行文件   否则   

原文地址:http://blog.51cto.com/13959448/2324629

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!