Linux中make和makefile

make与makefile

  • 简单介绍
  • 常见用法
    • 符号替代
    • 自动寻找
    • 设置变量
    • 取消打印提示

简单介绍

make是Linux中一个命令,与之匹配的是makefile,makefile是一个文件。make会根据makefile中的内容完成对应的工作

创建一个名为makefile的文件
vim打开makefile
第一行是依赖关系,my.exe 是我们要生成的文件,后面是依赖文件列表,依赖文件列表可以有很多个
第二行是依赖方法,就是我们要通过什么方式获得我们要生成的方式,依赖方法开头必须是Tab键,不能是空格(依赖方法可以不止一个,依赖关系下的所有命令都会执行,可以通过这样一次进行多步操作
第三行的.PHONY代表后面的命令总是被执行
第四行依然是依赖关系,clean比较特殊,依赖文件列表可以为空
第五行是依赖方法
在这里插入图片描述

如果我们单纯执行make命令,默认执行makefile中的第一个依赖关系的以来方法,如果我们把clean的放第一行,那么默认就会执行clean
在这里插入图片描述

如果没有放在第一行,那么就要make 依赖关系的目标文件,比如,如果my.exe放在下面,如果要形成my.exe,就要make my.exe。
在这里插入图片描述

当make形成可执行程序以后,就无法再次make,这是因为我们的文件已经是最新的了,如果再次编译很浪费时间,小程序还好,不明显,如果是很大的项目,编译就会花很久的时间。
在这里插入图片描述

通过stat可以查看文件acm时间,其中makefile就是对比Modify的时间,如果可执行程序的时间是最新的,就无法进行make。
PHONY修饰的符号总是可以执行,就是不去对比时间,所有才可以一直执行
在这里插入图片描述

常见用法

符号替代

$@代指要生成的目标文件
$^代指依赖文件
@代表目标文件,^代表依赖文件,$表示提取文件
在这里插入图片描述

自动寻找

同样可以这样写,如果发现没有code.o会自动向下寻找,发现所依赖的.s文件也没有,那么就会递归式地向下寻找,一直到找到为止,否则就报错。但是我们要形成地目标文件要在第一行,因为默认形成第一行地目标文件。
在这里插入图片描述

设置变量

设置变量为我们的目标文件和依赖文件
用$符号取出我们的变量取代的文件
同样可以生成我们的目标文件
在这里插入图片描述

取消打印提示

输入命令会提示,在每一条依赖方法前面加@就不会再进行提示了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis常用数据类型--List

List 常用命令LPUSH/RPUSHLPUSHX/RPUSHXLRANGELPOP/RPOPLINDEXLINSERTLLENBLPOP/BRPOP 内部编码典型应用场景 常用命令 LPUSH/RPUSH 将⼀个或者多个元素从左侧(头插) / 右侧(尾插)放入到 list 中 LPUSH key element [element ...]/RPUSH key element [element ...]时间复杂度…

lwip通过结构体解析数据,通讯原始数据与结构体

涉及数据格式 下面一段代码在ip4.h PACK_STRUCT_BEGIN /* The IPv4 header */ struct ip_hdr {/* version / header length */PACK_STRUCT_FLD_8(u8_t _v_hl);/* type of service */PACK_STRUCT_FLD_8(u8_t _tos);/* total length */PACK_STRUCT_FIELD(u16_t _len);/* identi…

el-table @row-click影响复制以及el-table-column的点击事件

问题一影响复制 在row-click的函数里面加一个内容判断 if (window.getSelection().toString() ) 只有当选中的内容为空的时候才执行row-click 问题二影响el-table-column的点击事件 el-table-column的点击事件上的点击事件加上.stop click.stop修饰符可以阻止事件继续向上传…

调试以及发布npm组件

开发原因: 由于公司自己的封装到npm的组件有点问题,负责人由在忙其他,就由我去负责改改,中途出了不少问题,记录一下。 一、下载源码 第一步肯定是去git上把组件的源码下载下来,这一步没什么好说&#xf…

好的问卷设计标准:确保数据质量与准确性的关键要素

问卷的主要由三个部分组成:问卷说明、问卷主题、问卷结束。而这三个部分又包含了很多因素,比如问卷主题、问卷标题、问卷题目、问卷调查对象等。制作问卷不仅仅是简单的问题罗列,然后进行发放。不同质量的调查问卷会反馈出不一样的效果&#…

Vue.js设计与实现(霍春阳)

Vue.js设计与实现 (霍春阳) 电子版获取链接:Vue.js设计与实现(霍春阳) 编辑推荐 适读人群 :1.对Vue.js 2/3具有上手经验,且希望进一步理解Vue.js框架设计原理的开发人员; 2.没有使用过Vue.js,但对Vue.js框架设计感兴趣…

2024年美赛E题:财产保险的可持续性 Sustainability of Property Insurance 思路模型代码解析

2024年美赛E题:财产保险的可持续性 Sustainability of Property Insurance 思路模型代码解析 【点击最下方群名片,加入群聊,获取更多思路与代码哦~】 问题翻译 极端天气事件对房产所有者和保险公司已经成为一场危机。近年来,世界…

RabbitMQ-中死信交换机

在RabbitMQ中,死信交换机(DLX,Dead Letter Exchange)是一种用于处理无法正常消费的消息的机制。当消息在一个队列中变成死信(dead letter)之后,它可以被重新发布到另一个交换机,这个…

Blender教程(基础)-面的切割-10

快捷键K切割,菜单选项切割. 一、随意切割 物体在编辑模式下,按键盘K建切割物体。 二、中点切割 先按K键,再按shift键,会自动吸附到每条边的中点进行切割。 三、取消吸附 切割时会自动吸附到顶点或边 关闭快速吸附 按K键再按…

26条prompt规则应用于大模型

1、引入动机 llm大模型在回答一些问题上表现出了惊人的能力,例如数学逻辑推理,代码生成,问题答复等。提词工程是和大预言模型交流的一门艺术。 大模型的返回结合和用户的指令和输入直接相关prompts是用户和大模型沟通的一种编码方式 一般地…

在低代码平台上实现精益软件开发:提高效率与灵活性的关键实践

什么是精益软件开发? 精益软件开发是一种敏捷的软件开发框架。它基于最小化浪费和最大化价值的原则。该框架基于最小可行产品策略运行,该策略强调交付具有基本基本功能的产品,然后根据收到的反馈进行迭代以即兴发挥并提供卓越。 精益软件开发…

2阶段提交_3阶段提交(phase-commit)

1. 2PC(两阶段提交) 如上所示是2阶段提交的一个过程,可为什么要进行两阶段提交呢?这里主要来说是将操作事务能力和提交、回滚事务能力分开来做成2阶段,如果不分开会造成什么后果呢: 如果单纯 A 向 B 发送一个请求就以…

由于找不到d3dcompiler43.dll无法继续执行程序的解决方法

在日常使用电脑的过程中,我们常常会遭遇一些突发的技术问题,其中之一便是可能会遇到系统提示找不到d3dcompiler43.dll文件的情况。这一特定的动态链接库文件(dll)对于许多应用程序的正常运行至关重要,尤其是在涉及到图…

什么是Golang中的包循环问题?如何规避?

Go语言作为一门注重简洁和效率的编程语言,在设计上有着严格的规范和原则。其中一个突出的设计决策是禁止包循环。接下来将深入解释为何Go语言中不允许包循环,如何避免它,以及如何进行好的规划,通过实际开发案例和代码演示&#xf…

PPT母版页码设置

PPT母版页码设置 一、需求介绍二、达到效果三、具体操作1. 插入页码2. 设置起始页码为03. 进入母版编辑页面4. 内容格式调整5. 删去最后一个板式的三个模块信息6. 尾页处理7. 最终效果 一、需求介绍 PPT的母版可以设定PPT的基调,且在非母版页面不会误改PPT中的固定…

数据库管理-第143期 Oracle DB 19c需要调整的基本参数V2(20240202)

数据库管理143期 2024-02-08 数据库管理-第143期 Oracle DB 19c需要调整的基本参数V2(20240202)1 DRM2 readmostly objects3 内存大页4 CLUSTER_INTERCONNECTS5 db_files6 内存配置7 555.1总结 数据库管理-第143期 Oracle DB 19c需要调整的基本参数V2&am…

【笔记】Android 常用编译模块和输出产物路径

模块&产物路径 具体编译到软件的路径要看编译规则的分区,代码中模块编译输出的产物基本对应。 Android 代码模块 编译产物路径设备adb路径Comment 模块device/mediatek/system/common/ 资源overlay/telephony/frameworks/base/core 文件举例res/res/values-m…

大专考试,搜题最准的软件?搜题神器推荐,助力大学生学业! #其他#知识分享

下面,我将为您介绍几款备受大学生欢迎的搜题软件,希望能够帮助您更好地完成学业和提升学习效果。 1.Quizlet Quizlet是一款学习卡片和题库应用,可用于各种学科的学习和复习。通过Quizlet,学生可以创建自己的学习卡片&#xff0c…

Leetcode的AC指南 —— 栈与队列 :150. 逆波兰表达式求值

摘要: **Leetcode的AC指南 —— 栈与队列 :150. 逆波兰表达式求值 **。题目介绍:给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 文章目录 一、题目…

GED(Generalized Error Distribution)广义误差分布

介绍 广义误差分布(GED)是指一类以整个实数轴为支撑集的连续分布,是由Box和Tiao在1973年提出的(他们称该分布为the exponential power distribution), Harvey在1981年又提出了该分布并命名为GED. 该分布包含三个参数 μ ∈ R , a > 0 , b > 0 \m…