秒懂Linux之自动化构建工具-make/Makefile

目录
一.前文摘要
二.make/Makefile
一.前文摘要
在学习自动化构建工具前我们先来补充一下动静态库的相关指令
动态库指令
gcc -o 文件(重命名) 源文件
静态库指令
gcc -o 文件(重命名) 源文件 -static
二.make/Makefile
怎么形容这个呢~等我们使用后就知道为什么叫自动化了~
首先我们需要创建一个名为Makefile(makefile)且必须是该名字,然后我们vim进入该文件进行编写~
第一行为依赖关系:mybin是我们想要得到的可执行文件的命名,而test.c为源文件~
第二行为依赖方法:就是我们想要达到的目的——得到可执行文件(注意:必须前面tab有4格距离)
编写完成后我们只需要输入make指令~它就会自动帮我们生成可执行文件了~
我们还可以加入clean在里面编写删除文件的操作,这样只需要输入make clean就会帮助我们执行该操作了~
当我们尝试更改顺序后会发现make指令变成了clean操作,而生成可执行文件得用make mybin~
这是因为Makefile在形成文件的时候,默认是从上往下扫描的,所以指令语法上也会对应~
语法补充~
用.PHONY修饰clean后无论是否存在clean这个文件,都会去执行rm语句~
小知识点~
一般默认形成的都是第一个文件且只能生成一个,意味着不能多次make~
只有在重新对源文件作出修改的时候才可以重新使用make~那么我们通过什么来作为make可以使用呢?——通过对比Makefile文件与源文件test.c的修改时间~源文件时间更新说明就修改了~
我们用stat指令获取到了相关的时间,那么这3种时间哪个才是可以比较的时间呢?
Modify显示的是对文件内容作出修改的时间点~
Change显示的是对文件属性作出修改的时间点~
而一般modify都会带动chang的更新,因为文件内容的修改会影响到大小,而大小是属于文件属性的一部分~
Access显示的是访问的时间,(不过不可能实时更新,而是达到一定访问次数更新,节省成本)
而我们比较的时间是Modify,这很合理~
相关文章:
秒懂Linux之自动化构建工具-make/Makefile
目录 一.前文摘要 二.make/Makefile 一.前文摘要 在学习自动化构建工具前我们先来补充一下动静态库的相关指令 动态库指令 gcc -o 文件(重命名) 源文件 静态库指令 gcc -o 文件(重命名) 源文件 -static 二.make/Makefile 怎么形…...
.net core + vue 搭建前后端分离的框架
目录 步骤一:创建.NET Core后端项目 步骤二:创建Vue.js前端项目 步骤三:集成后端和前端项目 步骤一:创建.NET Core后端项目 安装.NET Core SDK: 确保你的开发环境中已安装了最新版本的.NET Core SDK。你可以从 .NET …...
小阿轩yx-KVM+GFS 分布式存储系统构建 KVM 高可用
小阿轩yx-KVMGFS 分布式存储系统构建 KVM 高可用 案例分析 案例概述 使用 KVM 及 GlusterFS 技术,结合起来实现 KVM 高可用利用 GlusterFS 分布式复制卷对 KVM 虚拟机文件进行分布存储和冗余 分布式复制卷 主要用于需要冗余的情况下把一个文件存放在两个或两个…...
centos安装mysql 5.7版本
因为要继续第二阶段的学习,windows里面的mysql版本,很多设置没有。因此弄了一个虚拟机,安装了centos,在里面安装mysql。 看了《centos安装mysql 5.7版本》里面有设置my.cnf文件,这个在虚拟机里面编辑,手动敲…...
SQL——查询sql执行顺序
在SQL查询中,虽然我们在编写查询时遵循一定的逻辑顺序(SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY),但实际上,数据库在执行这些查询时遵循的是不同的物理执行顺序。这个物理执行顺序是数据库管理系统࿰…...
钉耙编程(3)
1001深度自同构 Problem Description 对于无向图中的点,定义一个点的度为与其相连的边的条数。 对于一棵有根树,定义一个点的深度为该点到根的距离。 对于由若干有根树构成的森林,定义该森林是深度自同构的,当且仅当森林中任意…...
python 线程池处理文件
使用多线程来加速文件复制的过程,可以使用Python的concurrent.futures模块中的ThreadPoolExecutor。代码如下: import glob import os import shutil from concurrent.futures import ThreadPoolExecutordef copy_image(image):imagepath image.replace…...
AI技术和大模型对人才市场的影响
012024 AI技术和大模型 2024年AI技术和大模型呈现出多元化和深入融合的趋势,以下是一些关键的技术方向和特点: 1. 生成式AI 生成式AI(Generative AI)在2024年继续快速发展,它能够创造全新的内容,而不仅仅…...
解释“location”和“position”
Explanation of “Location” and “Position” Location and position are terms often used interchangeably in everyday language, but they can have distinct meanings depending on the context. Below, we explore their definitions, differences, and examples of u…...
Netty 必知必会(三)—— ByteBuf
Netty ByteBuf工作原理,和NIO里ByteBuffer区别? Java NIO 提供了ByteBuffer 作为它 的字节容器,但是这个类使⽤起来过于复杂,⽽且也有些繁琐。 ByteBuf是Netty框架中的一个关键类,专门设计来处理字节数据,…...
芋道以开源之名行下作之事 恬不知耻 标榜自己开源 公开源码+sql 不用再加入知识星球
资源 链接: https://pan.baidu.com/s/1TeuxbAUfLQ5_BqMBF1kniQ?pwdcqud 提 取码: cqud 依次为后端、补充版的sql、前端 此文档内安装部署等一应俱全...
wordpress中,wp_posts 文章的状态 有哪些,分别对应什么数值
在WordPress中,wp_posts 表存储了网站上的所有内容,包括文章(posts)、页面(pages)、自定义文章类型(custom post types)等。这个表有一个名为 post_status 的字段,用于标…...
输入成绩问题(c语言)
1.问题:期中考试开始了,大家想要取得好成绩,争夺前五名,从键盘输入n个学生成绩(不超过40个),输出每组的前五名的成绩 两行,第一行输入一个整数,表示n个学生(…...
基于域名+基于ip+基于端口的虚拟主机+上线商务系统
一、回顾 1.jdk环境 tomcat服务器需要jdk环境 版本对应 tomcat9>jdk1.8 配置系统变量JAVA_HOME sed -i $aexport JAVA_HOME/usr/local/jdk22/ /etc/profile sed -i $aexport PATH$JAVA_HOME/bin:$PATH /etc/profile source /etc/profile java -version java…...
vue每次路由跳转前将页面滚动到顶部
在Vue.js应用中,特别是使用Vue Router进行页面路由管理时,router.beforeEach是一个非常有用的导航守卫(Navigation Guard)。它允许你在路由跳转之前执行一些逻辑,比如权限验证、页面跳转前的数据加载、滚动位置重置等。…...
【Qt】QDateTimeEdit
在Qt中,QDateEdit是用于选择日期的微调框,QTimeEdit是用于选择小时和分钟的微调框 QDateTimeEdit则是基于QDateEdit和QTimeEdit的组合控件,能够同时显示日期和时间,并允许用户以交互方式编辑日期 常用属性 属性说明dateTime时间…...
Redis和Mysql如何保持数据一致性
一般情况下,Redis是用来实现应用和数据库之间读操作得缓存层,主要目的是减少数据库IO,还可以提升数据的IO性能。 当应用程序需要去读取某个数据时,会首先尝试去Redis里面加载,如果命中就直接返回,如果没有…...
Java中Optional相关
Java中Optional相关 orElse 提供默认值以确保不会返回 null。 适用于默认情况下的备选值或简单计算结果。 // 如果 optionalName 为空,返回 "Unknown" Optional<String> optionalName Optional.empty(); String result optionalName.orElse(&q…...
AI在HR候选人关系管理中的革新应用
一、引言 随着人工智能(AI)技术的快速发展,其在人力资源管理(HR)领域的应用也日益广泛。特别是在候选人关系管理方面,AI技术不仅提高了管理效率,还使得候选人体验得到了极大的改善。本文将深入分…...
HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字+烟花特效)
利用HTMLCSSJavaScript制作了一个简单的七夕表白网页: 这是一个简单的表白功能,可以用于小哥哥小姐姐在情人节向心爱的人表白使用点击信封中间的爱心,会出现一封信由信封向外展开,与此同时会有烟花绽放,并且自动播放背…...
工业质检新突破:如何用GLAD扩散模型实现高精度无监督异常检测(附MVTec-AD实测)
工业质检革命:GLAD扩散模型如何重塑无监督缺陷检测 在制造业智能化转型浪潮中,工业质检环节正经历着从人工目检到AI视觉的范式转移。传统基于规则或监督学习的检测系统面临标注成本高、泛化能力弱等痛点,而无监督异常检测技术凭借"零样本…...
Web AR开发全指南:从技术原理到实战应用
Web AR开发全指南:从技术原理到实战应用 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js 随着增强现实技术的发展,Web AR开发已成为前端领域的…...
避免踩坑:Unity中Resources.LoadAll的正确使用姿势(含multiple模式Sprite处理)
Unity资源加载进阶:Resources.LoadAll与Sprite图集高效处理指南 在Unity开发中,资源加载是每个项目都无法绕开的核心环节。特别是当处理包含多张小图的Sprite图集时,很多开发者会陷入性能陷阱和功能误区。本文将深入剖析Resources.LoadAll的正…...
3步搞定!Jable视频下载终极指南:免费Chrome插件+本地工具完整教程
3步搞定!Jable视频下载终极指南:免费Chrome插件本地工具完整教程 【免费下载链接】jable-download 方便下载jable的小工具 项目地址: https://gitcode.com/gh_mirrors/ja/jable-download Jable视频下载工具是一款专为普通用户设计的免费开源解决方…...
GEO 优化系统实战指南:从架构设计到算法落地
1. GEO优化系统架构设计实战 第一次接触GEO优化系统时,我被各种空间计算概念搞得晕头转向。直到真正动手搭建系统才发现,架构设计就像搭积木,只要掌握关键模块的组装逻辑,就能构建出稳定高效的地理优化引擎。下面分享我在多个项目…...
从零封装一个 Vue 低代码表单组件:我是如何借鉴 FcDesigner 的设计思路的
从零封装一个 Vue 低代码表单组件:我是如何借鉴 FcDesigner 的设计思路的 低代码开发正在改变前端工程师的工作方式。作为一名长期深耕表单领域的前端开发者,我曾参与过多个企业级低代码平台的搭建,也经历过从零开始封装表单组件的完整周期。…...
PCB设计新手必看:从零开始掌握PCB设计全流程
1. PCB设计入门:从零开始的完整指南 刚接触PCB设计时,我完全被各种专业术语和复杂流程搞懵了。直到自己动手做了几块板子,才发现其实只要掌握正确的方法,PCB设计并没有想象中那么难。这篇文章就是把我踩过的坑和积累的经验&#x…...
保研党必看:用本科论文逆袭IEEE二区期刊的5个关键操作(含时间管理秘籍)
保研党必看:用本科论文逆袭IEEE二区期刊的5个关键操作(含时间管理秘籍) 在保研竞争日益激烈的当下,一篇高质量的学术论文往往能成为决定成败的关键。对于大多数本科生来说,科研经历有限、资源匮乏是普遍面临的困境。但…...
岗亭厂家直销:揭秘源头工厂如何帮你省下30%采购成本
在2026年1月的今天,户外岗亭作为城市管理、社区安防及商业服务的关键节点,其市场需求持续增长。然而,行业在快速发展的同时,也暴露出一些亟待解决的技术与成本挑战。从技术层面看,传统岗亭产品普遍面临结构稳定性不足、…...
当multisim遇见ai助手:快马平台如何智能分析与优化你的电路设计
作为一名电子设计爱好者,最近在InsCode(快马)平台尝试了一个特别有意思的项目——用AI辅助优化Multisim电路设计。整个过程就像有个专业的电子工程师在旁边实时指导,分享下我的实践心得: 直流工作点智能诊断 输入一个简单的晶体管放大电路后&…...










