当前位置: 首页 > news >正文

辽宁沈阳做网站海报在线设计生成器

辽宁沈阳做网站,海报在线设计生成器,申请免费网站主页空间,网站 源码 下载一、什么是makefile/make 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译&am…

一、什么是makefile/make

会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂 的功能操作 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编 译,极大的提高了软件开发的效率。 make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命 令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一 种在工程方面的编译方法。 make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

而make则是指令,makefile里保存的是依赖关系和依赖方法。

1.1makefile文件的编写

首先我们先touch一个makefile.c的文件,以往我们需要在命令行进行gcc去手动编译形成可执行程序,但通过makefile文件我们可以很好的释放自己的双手。

第一行表明依赖关系:要形成的文件为mybin,依赖文件为没有test.c。冒号的左边被称为目标文件,右边为依赖文件列表

第二行则是要执行的指令即依赖方法,使用gcc编译器形成mybin文件,源文件为mytest.c。

这样我们直接调用make指令就可以形成名为mymakefile的可执行程序。

然后运行mymakefile,就可以执行刚刚自己编写的makefile.c的程序了。

当我们再次make时,因为已经生成了可执行程序,而且我们对依赖文件并没有进行修改,所以这里就会make失败。此时如果我们对依赖文件做出修改就可以重新编译成功。

1.2makeclean

那我们如何清理项目呢?

我们可以通过设置自动化清理make clean来删除刚刚生成的可执行文件。

这时如果我们将 clean与mymakefile调换位置,再次去make就默认去调用clean。

所以make和Makefile形成目标文件的时候,默认时从上到下扫描makefile文件的,默认形成的时第一个目标文件。

那make和makefile怎么知道可执行程序即依赖文件是不是最新的呢?是通过对比时间对比出来的,只要可执行程序最近的修改时间比所有源文件的最近修改时间新,就说明它就是最新的。在逻辑上可执行和源文件的时间是不可能一样的。

1.3文件时间

stat查看文件详细信息可以看到时间。

文件=内容+属性,如果对内容更新,Modify的时间就会更新,如果对文件的属性做更新,Change的时间就会改变。

比如ll,就可以查看文件详细属性信息,如果我们用chmod对文件的权限进行修改,再次查看文件的详细信息就可以看到chang显示的时间被更改。而我们对内容即Modify更改时,change也会改变,因为更改内容会对文件大小造成改变,属性change也会跟着改变

 Access是指上一次查看文件的时间,而查看文件的次数比更改文件内容属性的次数要多得多,如果每次查看都要更改Access, 那如果短时间内多次查看文件就会导致操作系统反复向磁盘更改文件的Access信息,导致系统本身变得低效。所以并不会每次都更新。

所以make指令在判断是否要重新生成目标文件时,比较的是依赖文件和已经生成的目标文件的Modify时间,当然我们也可以使用touch对依赖文件的Modify时间进行刷新,刷新后再使用make去重新覆盖生成目标文件。

而在非常大型的项目中,上百万行的代码,编译器在编译的时候可能会耗费十几二十分钟,如果我们对其中一个文件做修改,再次编译,编译器会根据时间判断修改了哪个,然后将其重新编译然后和其他没有修改的已经编译好的文件进行融合链接,大大提高了效率节省了时间。所以判断新旧时间是很有必要的。

二、make语法补充

2.1 .PHONY

 .PHONY用来修饰目标文件,成为一个伪目标,总是被执行。这样每次调用相关指令都会无脑进行重新编译不会再去检查新旧文件的相关时间属性。

2.2$@ $^

当出现文件名比较长或者较为复杂时,我们可以使用 $@ $^来让编译器根据上面的依赖关系进行推导,$@表示目标文件 $^表示依赖文件。

也可以通过自定义变量然后进行替换,类似于宏的用法,依然可以实现make功能。

2.3make和makefile的语法推导

最终要形成的目标文件为mymakefile,我们可以根据程序的编译顺序,预处理编译汇编链接四个步骤来反向将文件从.c开始进行推导,形成最终的可执行程序需要.o文件,形成.o需要.s,形成,s需要.i,形成.i需要.c。所以从源文件到最终可执行是编译器这样一步步进行处理过来的,这就是make语法的推导过程。

 最后就对依赖关系进行推导然后逆向执行依赖方法,最终形成目标文件mymakefile。

当然我们平日里不需要这样的写法来折磨自己。只需了解其原理就ok。

http://www.yayakq.cn/news/68316/

相关文章:

  • 儿童故事网站建设注册公司怎么注册啊
  • 图片网站 代码怎么在手机上做一个网站
  • 做旅游网站公司网站建设是做什么
  • iis网站服务被禁用注册商标官网入口
  • ftp怎么设置网站首页wordpress 上传 七牛
  • 麻豆秋白色蕾丝半身裙平台优化方案
  • 源代码做网站定制手机号码官方网站
  • 家装效果图网站绵阳哪里可以做网站的地方
  • 企业门户网站的设计 流程图网站前台后台打开慢
  • 宁波免费建网站品划网络做网站
  • 网站建设事宜ui设计师掌握技能
  • 网站建设设计公司排名node.js下载wordpress
  • 樱桃企业网站管理系统域名永久买入要多少钱
  • 长安网站建设工作总结浙江网站建设正规公司
  • 如何在自己的网站上做h5页面产品宣传方式有哪些
  • 湖北省交通建设监理协会网站西安公司最新招聘信息
  • 公司注册网站入口有可以免费建网站的吗
  • 自己怎么做网站首页免费网页在线制作
  • 公司网站成本如何做好网站
  • 自己做了一个网站软装设计网站推荐
  • 网站设计编程有哪些一个完整的项目流程图
  • 百度网站地图怎么做免费游戏不用登录大全
  • 赤坎网站制作住房和城乡建设部网站第九批
  • 学校网站制作方案wordpress精简代码
  • 手把手教做网站网站浮动广告怎么做
  • 安丘网站建设公司长沙h5手机网站制作
  • 免费建立个人网站凡科wordpress 关闭顶部
  • 品牌网站建设保障大蝌蚪编辑网站用什么软件
  • 成都锦江规划建设局网站禁止百度收录的网站
  • 中国建设银行网站查工资哪有做网站的