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

海口网站建设推广dedecms网站tag标签静态化

海口网站建设推广,dedecms网站tag标签静态化,电子商务网站建设与管理学习心得,微信可以上网make/Makefile使用介绍 make是一个命令makefile是一个在当前目录下存在的一个具有特定格式的文本文件 ​ 下面我们设计一个场景&#xff0c;实现make命令对我们code.c文件进行编译和删除。 1 #include<stdio.h> 2 3 int main() 4 { 5 printf("hello,world!…

make/Makefile使用介绍

  • make是一个命令
  • makefile是一个在当前目录下存在的一个具有特定格式的文本文件

​ 下面我们设计一个场景,实现make命令对我们code.c文件进行编译和删除。

  1 #include<stdio.h>  2   3 int main()  4 {  5   printf("hello,world!\n");6   return 0;         7 }                                                                                                

​ 以下是makefile的内容:

  1 myexe:code.c //依赖关系2   gcc code.c -o myexe //依赖方法3 .PHONY:clean //clean是伪目标4 clean: //可不写依赖目标5   rm -f myexe  //依赖方法

.PHONY修饰的是伪目标,意思是总是被执行的,依赖方法总是会被执行,不会被任何情况拦截,想执行就执行。我们在命令行输入make就可以对code.c文件进行编译,生成myexe可执行文件,make clean就可以删除生成的可执行文件myexe。现实中,有了依赖关系依赖方法就可以描述清楚一件事情的原因和做法,达到我们的目标。

make后面跟着目标,只有make就会执行第一个扫描到的目标的依赖方法。如果我们连续两次make就会发现报错。

image-20231105102624286

​ 原因是我们对code.c编译过一次后并没有对原文件进行修改,重新编译也是浪费时间和资源,所以就不会再帮我们重新编译了。但如果我们对myexe加上.PHONY修饰的话,就可以无视拦截。

​ 这种拦截可以提高编译效率,对于大型项目如果我们只修改了一个小文件就要把整个项目重新编译一遍就有点浪费时间了,这种情况下只需要重新编译修改了的文件即可。大部分情况下没问题,问题的产生不仅仅是修改新文件就能解决的,有些历史问题需要重新清理项目才能解决。

​ 那么问题来了,编译器怎么知道我们有没有修改文件呢?

本质是对比源文件和可执行文件的修改时间,因为一定是现有源文件才有可执行文件,当源文件的修改时间 < 可执行文件的修改时间就说明没有更改,反之则说明更改了源文件内容

文件的ACM时间

​ 一个文件有三种时间(文件=内容+属性)

  • Access:最近一次读取文件的时间
  • Modify:最近一次修改文件内容的时间
  • Change:最近一次修改文件属性的时间

​ 关于ACM时间变化的细节:

  • 一般情况下Modify更改会带动Change一起更改,因为Modify更改会发生文件大小的改变,就相当于更改了文件属性。更改文件的权限此时Change也会变化,因为这些都是对文件属性的更改。

  • Access时间理论上只要是我读取/打开了文件就会发生变化,但实际并不如此,这里有两种情况:

    1. 读取/打开好几次文件Access才会发生变化
    2. 只有修改了文件内容,再读取/打开Access才会发生变化

    造成这种现象的原因是一个文件被查看的频率非常高,每次查看都要更改Access,本质就是访问磁盘,如果是这样那么Linux系统就会充满大量访问磁盘的IO操作变相降低系统效率,所以就对文件的Access时间的更改进行了一些限制

touch [文件名]可以在不更改内容的情况让文件的时间变成最新的。

make/Makefile拓展

推导性

make/makefile具有推导能力,如果当前目标依赖的文件不存在则会向下搜索去找以依赖文件为目标文件的依赖文件(一直套娃),直到某一个目标文件的依赖文件存在,就逐步往回执行依赖方法,如果搜索完了也没有找到就会退出并报错。

变量

makefile里可以设置变量,也可以对变量重新赋值

  1	src=code.c //定义变量2 target=myexe3 cc=gcc4 5 6 $(target):$(src) //&(变量名)7   $(cc) $(src) -o $(target)       8 .PHONY:clean9 clean:10   rm -f myexe

其他

makefile对于目标文件和依赖目标可以用特定符号表示

  1 myexe:code.c2   gcc $^ -o $@ //$^代表冒号右边所有文件,$@代表冒号左边所有文件3 .PHONY:clean4 clean:5   rm -f myexe

makemake clean的时候每次都会有打印出指令比较显眼,在依赖方法前加上@即可不显示指令,以及可以写多条依赖方法

  1 myexe:code.c2   @gcc $^ -o $@3   @echo "编译文件"  4 .PHONY:clean      5 clean:        6   @rm -f myexe    7   @echo "清理文件"

image-20231105120604147

​ 以上语法拓展也可以组合使用。

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

相关文章:

  • 莱芜中考网站设计模板怎么设置
  • 外贸网站免费建设ui设计与制作
  • 游戏网站app怎么建立一个公司的网站
  • 泰州做企业网站cms监控手机客户端
  • 北京网站备案号wordpress是开源的吗
  • 有关大数据的网站及网址wordpress知更鸟主题
  • 茂名seo站内优化wordpress增加变量
  • 数据库网站 建设方案开发app需要多少钱?
  • php网站建设哪家好律师个人网站模板
  • 网站seo模块做外贸做的很好的网站
  • app网站制作下载柳州做网站seo哪家好
  • 软件开发与网站建设e福州怎么交医保
  • 公司网站备案需要每年做吗十大招商平台
  • 重庆官方网站有哪些番禺建设局网站首页
  • 看优秀摄影做品的网站做摄影和后期的兼职网站
  • 企业网站软件开发网站标题 关键词 描述之间的关系
  • 深圳网站建设外贸公司排版设计技巧
  • 厦门网站制作专业wordpress菜单怎么设置目录册
  • 做网站搭建服务器要多少钱云服务器可以做视频网站吗
  • 网站开发实训感想wordpress互动主题
  • 江西数据平台网站建设牡丹江最新信息网0453
  • 海南医院网站建设网站开发面试自我介绍
  • 网站批量上传文章网站首页跳出弹窗
  • 免费建站建设网站网站备案主体注销
  • 昆明网站建设天猫运营偃师网络营销的概念
  • 一个网站通常包含多个网页网站被黑 禁止js跳转
  • 怎样建官方网站东莞网站优化东莞seo最专业的东莞网络公司小红孩营销
  • 旅游网站设计源代码南京江宁网站制作
  • 广平企业做网站推广网站建设需要哪些信息
  • 平陆网站建设番禺网站建设培训班