C/C++知识点之C指针原理(14)-C指针基础
小标 2019-02-19 来源 : 阅读 534 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之C指针原理(14)-C指针基础,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之C指针原理(14)-C指针基础,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之C指针原理(14)-C指针基础

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/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程