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

流量宝青岛网站建设优化

流量宝,青岛网站建设优化,中山快速做网站服务,永兴县网站建设哪个好Linxu自动化构建工具make/Makefile究竟时什么#xff1f; 一、简介二、makefile文件制作#xff08;简洁版#xff09;2.1 源文件2.2 makefile如何制作2.2.1 依赖关系、依赖方法2.2.3 伪目标#xff08;清理文件资源#xff09; 三、make/Makefile自动化原理3.1 伪目标为什… Linxu自动化构建工具make/Makefile究竟时什么 一、简介二、makefile文件制作简洁版2.1 源文件2.2 makefile如何制作2.2.1 依赖关系、依赖方法2.2.3 伪目标清理文件资源 三、make/Makefile自动化原理3.1 伪目标为什么可以重复执行3.2 make如何工作 四、Makefile简介版本4.1 版本一4.2 版本二4,3 版本三 一、简介 在一个大型工程中源文件不计其数。按照文件类型、功能、模块不同放在不同的目录下。但哪些文件先编译哪些文件后编译哪些文件需冲重新编译甚至更为复杂的功能操作如果依靠程序员自身来控制不仅效率低下而且极其容易出错为此自动化构建工具诞生 —— make/Makefile  Makefile(或makefile)是一个脚本文件而make是一个命令工具用于解释Makefile中的指令一般来说大多数的IDE都有这个命令比如Delphi的makeVisual C的nmakeLinux下GNU的make。当我们在Makefile中一旦写好了编译方式只需要一个make命令就可完成整个工程的自动化编译。 二、makefile文件制作简洁版 2.1 源文件 这里我们给出一段各位都记忆深刻的代码存在于code.c源文件中 #include stdio.h int main() { printf(hello world\n);printf(hello world\n);printf(hello world\n);return 0; } 2.2 makefile如何制作 在工程中最重要的就是通过源文件通过某种方式来形成可执行文件以及项目资源的清理。现在的问题是如何通过makefile来达到上述目的呢 我们只需要在Makefile文件中输入以下程序即可后续还会在修改 mybin:code.c #如果有多个源文件code.c后可继续田间源文件 gcc code.c -o mybin #前面的空格只能按Tab键不能输入4个空格语法 .PHONY:clean #伪目标 clean: rm -f mybin接下来我们来一一分析每段代码是什么意思以及如何编写 2.2.1 依赖关系、依赖方法 第一行mybin:code.c 称为依赖关系冒号左边为目标文件冒号左边为源文件可以是多个。  第二行gcc code.c -o mybin称为依赖关系及源文件通过何种方式来形成目标文件。需要特别注意的是依赖关系前的空格只能通过Tab键实现不可以是4空格或其他 比如假设我们需要通过main.c、code.c、test.c三个源文件通过gcc来编译形成mybin目标文件所以代码为 mybin:main.c code.c test.c gcc main.c code.c test.c -o mybin或 mybin:main.c code.c test.c gcc -o mybin main.c code.c test.c //只需保证-o后紧跟的是目标文件即可2.2.3 伪目标清理文件资源 在上述代码中.PHONY:xxx文件名表示该目标文件为伪目标表示该文件不需要依赖关系并且总是被执行。 现在我们分别运行伪目标文件和普通文件看看会发生什么 【普通目标文件】 【伪目标文件】 我们发现对于普通目标文件一旦我们编译后就不能重复编译否则会报make: ‘mybin is up to date.但对于伪目标文件来说可以重复执行。  为什么会这样呢 三、make/Makefile自动化原理 3.1 伪目标为什么可以重复执行 在解决这个问题之前我们需要先了解为什么普通目标文件不可以重复执行 在实际工程中一个大型项目存在众多的源文件我们需要对这些源文件进行编译形成可执行文件。但一旦编译好后在下一次执行该文件时我们只需要重新编译某些内容被修改过的源文件即可。如果每次执行都需要重新编译所有的源文件不仅意义不大还会导致效率大大降低 那程序如何发现代码别修改过需要重新编译了 在Linux中每个文件有3种时间Access、Modify、change三种时间分别代表文件被打开的时间、文件内容内修改的时间、文件属性被修改的时间。我们可以通过stat 文件名来查看文件的3种时间。  其中Access时间比较特殊。一般而言一个文件被访问是非常频繁的。由于文件存在磁盘中如果每次进入文件都修改文件的Access时间这也意味着存在大量的访问磁盘的IO操作变形的降低了操作系统的效率。为此当代计算机一般都对更改Access时间做了次数限制不同机器平台存在差异。只有达到一定次数时才会修改Access时间。  由于我们最终目的是得到相应的可执行程序所以我们可以通过对比源文件和可执行文件的Modify来判断哪些文件被修改过需要重新编译。即源文件第一次形成可执行文件时可执行文件的Modify 源文件的Modify。一旦源文件内容被修改后此时源文件Modify被修改为最新时间此时源文件Modify 可执行文件的Modify。而make如果识别到源文件Modify 可执行文件的Modify便会对源文件进行重新编译。 伪目标为什么可以重复执行  前面博主替代过一旦文件通过.PHONY:文件名成为伪目标此时该文件不在需要依赖关系。这也意味这该文件不需要对比任何时间直接执行。即可以重复执行。 3.2 make如何工作 在默认情况下只要我们输入make命令此时make会在当前目录下查找名为Makefile或makefile的文件。如果找到则它会将第一个目标文件作为最终的目标文件。  如果第一个目标文件文件不存在或是第一个目标文件所依赖的后面的 .o 文件的文件修改时间要比第一个目标文件新那么他就会执行后面所定义的命令来生成这个文件。如果第一个目标文件所依赖的.o文件也不存在那么make会在当前文件中找目标为.o文件的依赖性如果找到则再根据那一个规则生成.o文件。  这就是整个make的依赖性make会一层又一层地去找文件的依赖关系直到最终编译出第一个目标文件。在找寻的过程中如果出现错误比如最后被依赖的文件找不到那么make就会直接退出并报错而对于所定义的命令的错误或是编译不成功make根本不理。make只管文件的依赖性即如果在找了依赖关系之后冒号后面的文件还是不在那么就不工作了。 四、Makefile简介版本 比如假设我们需要通过main.c、code.c、test.c三个源文件通过gcc来编译形成mybin目标文件这里有3个版本。各位自行选择。 4.1 版本一 这个就是最简单版本就不多说了。 mybin:code.c gcc main.c、code.c、test.c -o mybin #前面的空格只能按Tab键不能输入4个空格语法 .PHONY:clean #伪目标 clean: rm -f main.c、code.c、test.c4.2 版本二 在Makefile中我们可以在指令前加上符号可以不在显示屏上回显文件执行的指令。同时$表示冒号左边的目标文件$^来表示冒号右边的所有源文件。 所以上述代码可修改如下 mybin:main.c、code.c、test.c gcc ^ -o $ #前面的空格只能按Tab键不能输入4个空格语法 .PHONY:clean #伪目标 clean: rm -f target4,3 版本三 在make/Makefile中支持变量化处理。有点类似于宏替换具体如下 ccgcc targetmybin.exe srcmain.c code.c test.c #使用上述变量时我们仅需通过$(变量)即可使用$(target):$(src) $(cc) ^ -o $ #前面的空格只能按Tab键不能输入4个空格语法 .PHONY:clean #伪目标 clean: rm -f target
http://www.pierceye.com/news/484324/

相关文章:

  • 关于旅游的网站建设论文广州外贸网站建设公司价格
  • 怎么给自己制作一个网站wordpress 中文摘要
  • 如何看网站的ftp服装网站建设策划书3000字
  • 无锡网站建设 网站制作常见的网站首页布局有哪几种
  • 网站研发PHP MYSQL网站开发全程实
  • 简约型网站国外做电商平台的网站还有什么
  • 云南昆明网站建设公司jsp网站开发详解下载
  • 上海h5网站开发网站建设在开封找谁做
  • 滨海建设局官方网站营销网络平台
  • 中国小康建设网是骗子网站吗?建设宁波市分行的互联网网站
  • 制造网站建设自己做游戏资讯网站
  • 网站建设质量如何衡量都江堰网站开发
  • 企业网站设计步骤中山制作网站的公司
  • 通化网站制作企信网官网查询入口
  • 无锡装修网站百科网站推广
  • 先做网站后付款怎么做网站弹窗通知
  • php做网站的分站学校网站开发价格
  • 静态动漫网站模板个人网站空间大小
  • 个人网站 如何做推广拓者设计吧官方网站
  • 农产品电子商务网站建设要求开发一款app软件需要多少钱
  • 仿微博网站模板织梦网站地图怎么做xml
  • 什么网站能买建设摩托车产品推广计划方案
  • 建设局网站买卖合同大连 商城网站制作公司
  • 网站开发实训意义湖州网站设计
  • 网站后台设置企业为什么要网站建设
  • 外贸网站推广平台有哪些怎么在亚马逊上开店铺
  • 网站模板下载简单的那种哪个网站可以做结婚请柬
  • 自建网站迁移wordpress 电影下载站
  • 深圳定制网站建设服务公司友情连接
  • 网络设计工资多少杭州seo网站排名优化