96SEO 2026-02-20 10:46 0
make是一个指令makefile是一个文件Makefile也是一样的两个实际上就是一个东西M大小写都没有影响这个是我们首先应该意识到的问题

为什么会有这个自动化构建工具就是我们自己创建一个文件在这个文件里面写入相关的内容之后这个时候我们需要使用gcc或者是g工具进行相关的编译我们如果要对于这个文件进行修改之后就需要重新进行编译这个时候还是需要输入这个指令gcc
源文件如果每一次进行修改这个编译的指令很麻烦这个时候我们就可以使用这个自动化构建工具运用依赖关系和依赖方法解决这个问题
创建一个test.c文件并在里面写入相关的内容可以使用vim运用不同的模式之间的相互切换实现这个内容的写入然后创建一个makefile文件这个里面就是依赖关系和依赖方法的内容
这个test:test.c就是依赖关系怎么理解呢这个test文件就是test.c文件编译之后的文件结果第二行就是依赖方法实际上就是进行编译的指令
clean就是一个文件创建之后的清理的命令我们使用的就是这个rm
上述的这个makefile问价创建完成之后test.c文件写入之后这个时候我们直接使用这个make指令这个时候就显示出来我们的makefile文件里面的第一个指令就是这个编译test.c文件的指令这样的话我们就可以直接使用这个make对于我们指定的文件进行编译处理而不需要重复的输入指令但是这个确定就是我们只能使用一次这个make指令当我们再次进行使用这个指令的时候系统就会提示我们这个test
date这个意思是说这个test文件编译之后的文件已经保存在了相关的目录里面除非我们对于这个test.c的内容进行修改这个时候我们才可以重新编译重新使用这个make指令因为这个重新编译之后的内容发生了更新和变化
源文件到可执行文件我们可以把这个过程写复杂一些把这个中间文件的生成过程也显示出来然后重新进行编译分析依赖关系依赖方法
这个里面的过程稍微复杂一些test文件依赖于这个test.o文件test.o又依赖于test.s文件test.s文件又依赖于test.i文件test.i文件又依赖于test.c文件这个过程很类似于我们之前学过的这个递归的过程这个只是为了说明问题我们的这个实际操作的时候直接按照上面的简便写法就可以了
这个例子只是为了说明多层依赖关系在执行的时候这个顺序的问题我们使用这个make指令的时候就会发现这个顺序和我们写入到makefile文件里面的顺序恰好是相反的我们可以类比这个递归的归的过程归的时候后调用的函数会限制性这个里面因为依赖关系后出现的指令会先被执行因为这个里面最先被需要的就是这个test.i文件他是直接有这个test.c文件得到的按照这个顺序才可以实现这个编译的过程
实际上我们上面输入的时候是4组指令每一组都是有这个依赖关系和依赖方法我们把这个4组的顺序随意更换这个输出的结果是不变的是可以正常运行的因此我们可以知道这个make会自动推导这个makefile文件里面的依赖关系所以这个和顺序没有关系
但是一旦我们缺少任意一个中间环节这个过程都是没有办法正常运行的因为他们之间是相互依赖的
make会自顶向下访问这个命令我们在这个makefile文件里面添加新的内容就是这个文件的清理什么叫做默认设置呢就是这个make指令的时候就会默认执行前面的这个文件编译的中间过程。
我们要想要清理这个文件就需要make
clean指令这个就是因为在默认的make指令作用下我们会先执行上面文件指令如果我们把这个清理的指令放到gcc的上面这个时候就会优先执行清理的命令
但是我们一般不会把这个文件的清理放到前面因为我们还需要对于这个相关的文件进行操作删除清理就没有办法操作了
我们第一次编译之后使用make就会执行相关的操作但是第二次甚至更多次使用这个make就无法有效发挥作用这个一个原因是为了提高我们的编译效率
怎么做到的源文件编译成可执行文件源文件最近被修改的时间早于可执行文件我们对于这个原文件修改之后没有编译这个新文件比可执行程序要更新这个时候就可以直接使用make指令这个时候回重新编译
这个也是为什么我们的文件编译一次之后只能make一次但是修改之后就可以再次使用这个make指令了的原因
我们上面介绍这个源文件和可执行文件的时间的早晚问题以确定这个make指令能否有效使用在linux里面我们可以使用这个stat指令查看相关的时间
test指令就是显示这个生成编译之后的可执行文件的相关的时间stat指令就是查看时间的这个指令后面可以跟上这个文件名字
显示的内容都是一样的只不过这个对应的选项的具体的数值会有所区别
这个下面显示了这个文件的相关的信息access就是访问这个文件的最新时间访问就比较宽泛我们使用cat查看相关的文件内容也是访问修改文件内容也是访问打开这个文件也是访问等等modify是修改的时间change
之前我们介绍权限的时候说过这个文件文件内容文件的属性这个modify是相当于改变这个文件的内容只对于文件的属性进行修改我们称之为change,所以我们对于文件操作的时候可能修改文件的内容和属性内容就是modify
但是这三个时间不是割裂的我们对于这个文件内容改变了modify时间肯定变但是这个文件内容改变会引起这个文件的大小改变这个change时间也会改变我们想要修改内容肯定要打开这个文件这个时候access时间也会改变因此这三个时间并不是没有任何联系
我们上面介绍的这个时间实际上就是判断源文件和目标文件的生成时间判断这个make是否会被执行如果我们想要这个make指令输入之后这个一定被执行可以在这个第一行前面添加.PHONY:文件名字
上面的就是这个文件makefile里面应该输入的内容我们使用make之后就会发现这个一定会被执行但是我们一般不会这样搞我们可以把这个总是被执行的设置放到clean那一行这样的话我们的这个清除就可以总是被执行默认实际上也是可以会被多次执行的但是并不一定这个里面只有文件清理的其他的指令这个并不是多此一举哈书写格式如下所示
我们在这个里面使用gcc进行编译的时候这个$可以表示这个依赖关系前面的文件$^可以表示这个依赖关系后面的文件我们可以使用这个符号代替里面涉及到的两个文件
但是实际上在查看文件内容的时候这个特殊符号会以这个文件名字的形式回显出来的
我们在这个指令前面添加上一个符号就可以让这个make之后的结果不会显示在屏幕上面这个就是一个隐藏的功能
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback