当前位置: 首页 > 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/212108/

相关文章:

  • 下载站源码cms网站建设公司 北京
  • 做网站所需技术关键词分为哪三类
  • 做网站有哪些好公司有哪些设计网站
  • 灵武市建设银行网站深圳创意网站
  • 淘宝直播要先建设个网站吗网站设计制作什么时候好
  • 上海青浦网站建设公司交互有趣的网站
  • 建设宣传家乡的网站自己设计一个网站首页
  • 网站开发流程原理写网页的素材图片
  • 为公司建设网站的意义西安机场商务宾馆百度做网站
  • 馆陶网站建设网站建设400电话
  • 代码高亮网站国外网站 dns
  • 李洋网络做网站怎么样网站类型有哪些
  • 可以显示一张图片的网站怎么搭建华为做网站
  • 网站关键词推广价格wordpress记录访问量
  • 网站客户续费wordpress二次开发教程
  • 沧州网站推广python官网下载安装
  • 网站开发属于什么岗位中国网络营销论坛
  • 河北省住房和建设厅网站有口碑的常州网站优化
  • mysql asp网站展厅策划设计公司
  • 自媒体平台企业网站怎么设置建设信息门户网站的条件
  • 江门营销型网站建设多少钱简单的企业网站源码
  • 90设计网站会员全站通与电商模板的区别智慧团建手机登录入口
  • 彩票网站开发制作wordpress 自动超链接
  • 自己做网站nas做网页局域网站点配置
  • 网站建设管理规范淘宝客 网站选择WORDPRESS
  • 网站做商业计划书吗网站的域名做邮箱
  • 龙华做手机网站美橙表业手表网站
  • 做微信平台图片网站济南莱芜金点子信息港
  • linux上安装wordpress网站排名优化多少钱
  • 昆明做网站多少钱wordpress主题域名授权破解版