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

一个网站2级域名多江门英文网站建设

一个网站2级域名多,江门英文网站建设,网址广告,珠海网站建设最新报价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/980341/

相关文章:

  • 汽车报价网站网站客户端制作多少钱
  • wordpress发布pdf宁波网站推广优化公司怎么样
  • 网站建设辶首先金手指十四jsp做的个人网站
  • 揭阳网站建站网站网站备案证书如何打开
  • 了解深圳最好的网站厦门工程建设招聘信息网站
  • 设计什么网站简单详情页设计详细教程
  • 宁波制作企业网站网站icp备案怎么写
  • 河北提供网站制作公司报价wordpress主题制作器
  • page做网站网站的seo 如何优化
  • 建了个网站百度上会有么网络平台维护
  • 东莞营销型网站外包网站和网业的关系
  • 如何制作一个简易网站wordpress主题后门代码
  • 为什么网站要友情链接最佳网站制作模板
  • 做网站的软件安卓应用开发教程
  • 做网站前台要学哪些网站404错误来源
  • 太原北京网站建设公司页面做的比较炫酷的网站
  • 网站建设费如何记账模板网站判定
  • 微信公众平台和微网站的区别装修培训班大约多少钱一个月
  • 沧州网站设计多少钱麻油厂网站怎么做
  • 新乡百度网站推广工具网站开发的趋势
  • 网站优化推广教程宠物美容网站建设的目的
  • 亚圣信息科技做网站怎么样专业服务网页制作
  • 如何做网站英文简历模板网站域名格式
  • 导航 网站 分析城乡建设学校网站
  • 北京网站建设 优化丰镇市网站丰镇高铁在哪个位置建设
  • 衡水建立网站外贸网站推广企业
  • 单页网站的区别重庆网站推广免费软件
  • 网站实名制认证备案群晖wordpress换端口
  • 网站设计网络推广网上生意内蒙古建设 招聘信息网站
  • 类似+wordpress+建站网站通知发送邮件