2.Makefile

uvm-1.2 examples —— 1.2 makefile 1. makefile 文章目录1. makefile前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import 阅读详情

1.Makefile

1.1 什么是 Makefile

一个工程中有很多文件,文件之间都是相辅相成有着编译的先后顺序,但是如果自己手动根据编译顺序编译文件造成速度非常慢。Makefile 是”自动化编译“,只需一个 make 指令系统就会根据编译顺序帮自己编译文件

1.2 Makefile 文件命名规则

image-20211101115607605

1.3 代码演示

1.生成一个 Makefile 文件

vim Makefile

2.将执行规则书写入 Makefile

image-20211101121336569

3.使用 make 编译 Makefile 文件

sudo apt install make // 安装 make 
make // 在 Makefile 所在文件夹执行指令

可以看到下图中输出了 Makefile 中的相关指令,与此同时在对应的文件下生成的 app 可执行文件

image-20211101121539005

4.执行 app 可执行文件

./app

这个 Makefile 是 make 默认执行的文件,如果不想叫 Makefile 也可以自定义名称,那么在 make 时后面就要拼接相应的文件名称。比如新建的 Makefile 替代文件是 abc

make abc

1.4 Makefile 的工作原理

image-20211101144442018

1.命令执行之前,检查规则中的依赖是否存在

当发现前面的命令找不到时 Makefile 文件会顺着继续向下查找后面的目标有没有有关生成前面相关文件的,如下图,一开始是没有 add.o 文件的,但是 makefile 文件会继续向下查找有没有生成 .o 的文件指令

Makefile 的指令都是为第一条指令服务的

image-20211101143607539

2.检测更新

Makefile 会对文件进行检测,比如使用 make 编译过 Makefile 文件的情况下,再使用 make 编译 Makefile 文件,就发现提示

image-20211101162023622

这是因为 make 是检查更新的,如果其中的文件没有更改,则就不会执行 Makefile 中的指令

1.5 Makefile 的优化

下面就要对下图的这些定义进行优化。优化一共分为三个步骤:使用变量将长字符串代替;使用通配符将重复的后缀代替;使用查找替换将长字符串中的后缀名进行查找替换

image-20211101143607539

1.使用变量进行优化

如上图所示可以使用变量代替一个长的字符串

image-20211101150106817

重新定义 Makefile 文件使用变量形式将长字符串进行取代

在最开头定义了两个变量 : src 和 target 并为其赋值。在后面使用 $(变量名) 的方法得到该变量的值。这样长字符串就在前面被定义了

image-20211101151125890

2.使用通配符简化命令代码

在文件中有很多 .c ;.o 的文件,% 可以理解为是 * 的操作;%.o 类似于 *.o这样的话会将所有的 .o 文件生成 .c 文件

image-20211101151440792 image-20211101152933807

3.使用“查找替换”将所有文件名替换

查找:

在自定义变量中定义了可以进行通配的文件名,下面对这些文件名进行替换

示例的意思是将本路径所有 *.c 和 sub 文件下的 *.c 文件名查找出来

image-20211101153710078

替换:

image-20211101154009105

查找到 text 中的单词 patten 并用 replacement 进行替换

image-20211101160206121

最后 make 执行的结果

image-20211101154752330

1.6 中间文件的清除

从 .c 文件到 app 可执行文件生成过程中产生大量 .o 的中间文件,下面使用 clean 的方法将中间过程的 .o 文件进行删除。同样是在 Makefile 中进行定义

image-20211101160933915

执行下面的指令就可以进行 clean 操作

image-20211101161118123

对 clean 操作生成伪目标

指示 clean 是一个假的定义操作。真的定义操作利用了自定义 Makefile 的方法定义的

.PHONY:clean 
image-20211101161435904
【makefile函数】makefile 常用函数汇总 阅读详情

相关推荐

Linux系统编程-Makefile文件使用

Linux中使用Makefile

qq_1033275663的博客 2161

makefile记录

有时候我们需要编写一个规则用来执行一些令,但是这个规则不是用来创建文件的,比如下面的,我们一般会写一个clean的目标,方便我们清理掉一些过程文件:

时时总结,常常分享 1246

RAG——从0到1快速搭建RAG应用

本文介绍了基于LangChain框架构建RAG(检索增强生成)应用的技术方案,涵盖核心模块选型与实现流程。技术栈包括:LangChain应用框架、pypdf文档解析、RecursiveCharacterTextSplitter文本分块、bge-small-zh-v1.5向量模型、Faiss向量库和通义千问大模型。文章详细说明了开发环境配置步骤,包括虚拟环境创建、依赖库安装和模型下载。核心代码分为索引、检索、生成三大流程,索引流程完成PDF文档解析、分块和向量化存储;检索流程实现查询向量化和相似度匹配;生成流

小志的博客 590

Makefile文本处理函数

$(subst FROM,TO,TEXT) 函数名称:字符串替换函数 函数功能:把字符串TEXT中的FROM字符串替换为TO 返回值:替换后的新字符串 $(subst ee,EE,feet on the stree) //替换“feet on the street“中的ee为EE。结果得到字符串”fEEt on the strEEt” $(pats

hailushijie的专栏 1158

2024广东省职业技能大赛云计算——集群部署GitLab

题目是这样的:在Kubernetes集群中新建命名空间gitlab-ci,将GitLab部署到该命名空间下,Deployment和Service名称均为gitlab,以NodePort方式将80端口对外暴露为30880,设置GitLab服务root用户的密码为admin@123,将项目包demo-2048.tar.gz导入到GitLab中并命名为demo-2048。GitLab是一个功能强大且灵活的 DevOps 平台,为开发团队和企业提供了从代码管理到持续集成、交付和部署的一整套解决方案。

kuuuugua的博客 4395

DDR5 的 PI: DIMM 上 PMIC,正在制造一批“新型 EMI 问题”

DDR5 的 PI,不再只是“供电设计”,而是一次“噪声管理设计”。电压稳定本地调节高频噪声EMI 风险系统不确定性DDR5 真正难的地方,不是跑起来,而是——在最差条件下,它还能不能一直跑。而 DIMM 上那颗 PMIC,正是你绕不开的关键角色。

weixin_43199439的博客 181

Makefile文件的编写

一、变量定义 1、“:=” a1:=a.0 a2:=$(a1) b.o 这种方式下变量a1的值是a.o,变量a2的值是a.o b.o。 2、“+=” a1=a.0 a1+=b.0 这种方式下变量a1的值是“a.o b.o”。也就是说“+=”可以实现给变量追加值。 Modules的值就是当前软件代码所有的功能目录,即main、add、mul、div、sub、log 二、函数名 1、subst 格...

Drvrenxu的博客 1084

《C#零基础入门之百识百例》(七)算数运算符 -- 圆的面积

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C# 有丰富的内置运算符,本文带你学习C# 中算数运算符。

陈言必行 -- Unity游戏开发领域优质博主 3613

Vivado Vitis 2022.2 makefile报错

路径与链接中那三个makefile类似。改了三个makefile,还是报错。的文件夹中也有makefile,编译时报错makefile。,改后之后就不报错了。

weixin_51332580的博客 4513

thinkphp6/8 - 实现评论区发表评论、回复评论功能数据库表设计与整个逻辑思路过程分析,tp5 评论盖楼等功能(附带源码稍加改造即可使用)

tp5评论区数据库表设计,tp5发表回复评论功能设计,thinkphp5如何做评论功能,tp5 php评论区实现发表回复删除评论,tp5评论区盖楼源码及数据表设计思路,thinkphp评论功能详细教程,thinkphp实现评论与回复功能,thinkphp实现文章评论和回复评论功能,tp5实现评论回复功能,thinkphp如何实现评论区,tp5网站PC移动端h5怎么做评论区发表留言及回复功能,thinkphp实现评论区插件,thinkphp评论区相互发表回复功能详细教程,thinkphp有没有评论区的组件插件

✅ 精选推荐文章 3159

【功能安全】【AutoSAR】程序流监控机制

目录 一、程序流执行的常见故障 二、程序流的监控机制 1、监控功能的实现 2、三种监督机制 a、生命监测机制 b、截止时间监测机制 c、逻辑程序流监测机制 一、程序流执行的常见故障 与程序流相关的故障,在ISO26262中第六章附录D中定义如下: — 执行阻塞; — 死锁; — 活锁; — 执行时间的不正确分配; — 软件要素间的不正确同步。 二、程序流的监控机制 1、监控功能的实现 AutoSAR中对程序流的监控功能的实现主要有“看门狗”栈(Watchdog Stack).

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 4517

【亲测免费】 makefile2dot: 将 Makefile 转换为可视化图形

makefile2dot: 将 Makefile 转换为可视化图形 makefile2dot 是一个简单的工具,可以将 Makefile 文件转换为 Graphviz 的 DOT 格式,进而生成可视化图形。这有助于更好地理解和调试复杂的 Makefile。 项目简介 makefile2dot 可以解析 Makefile 中的目标、依赖关系以及其他指令,并将其转换为 DOT 格式的文本文件。然后你可...

gitblog_00003的博客 865

SAP DRC 是什么?一文读懂 SAP Document and Reporting Compliance 的定位、架构与落地案例

把视线拉长,会发现SAP DRC的价值并不仅是用来交差的工具。它更像是企业在全球化经营中建设的一套公共底座:既能以最低的重复成本去应对各国不断演进的监管要求,也能为财务数字化与供应链协同提供可信数据回路。依托本地与云的分层职责、与的生态联动、以及按国家不断更新的任务目录,企业可以将合规变成一种标准化、工程化、可持续运营的能力。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1651

Makefile2Graph 使用教程

Makefile2Graph 是一个开源工具,用于将 Makefile 的依赖关系可视化为图形。通过这个工具,用户可以更直观地理解 Makefile 的结构和依赖关系,从而更有效地进行项目管理和调试。该项目由 Pierre Lindenbaum 开发,托管在 GitHub 上,地址为:[https://github.com/lindenb/makefile2graph](https://githu

gitblog_00615的博客 562

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MSYS2配置+通用makefile编写

MSYS2配置+通用makefile

m0_37859235的博客 1326

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何使用 makefile2graph:一个直观的指南

```markdown makefile2graph ├── LICENSE ├── Makefile ├── README.md ├── bin │ └── makefile2graph ├── doc │ └── example.dot ├── examples │ ├── complex.mk │ ├── hello.mk │ └── simple.mk ├── src

gitblog_00987的博客 512

【亲测免费】 Keil2Makefile: 从Keil到Makefile的无缝迁移指南

Keil2Makefile: 从Keil到Makefile的无缝迁移指南 项目介绍 Keil2Makefile 是一个强大的工具,专门用于将传统的Keil MDK项目转换成适用于GNU工具链的Makefile工程。这对于那些希望从闭源的Keil环境迁移到更为开放、跨平台的编译环境的开发者来说,是一个不可或缺的解决方案。该工具自动化地处理编译器指令的差异,如将Keil特有的__asm[NOP]转换为...

gitblog_00130的博客 1162

contiki2.6之Makefile详细解读一

下载contiki2.6源码:       http://download.csdn.net/detail/crystal736/5149740      打开makefile.include文件,这个是在contiki系统根目录中,而非工程目录,在contiki源码中有很多工程,在example目录里面,每一个目录对应一个工程,比如cc2530dk目录中就对应的是cc2530平台的工程,记住

crystal736的专栏 2877

TDengine Docker 部署完全指南:单机、Host 网络与 Compose 集群

本文是一份面向运维与开发者的 TDengine 容器化部署实战指南,系统讲解如何通过 `docker run` 与 `docker-compose` 在 Docker 容器中启动 TDengine 服务、控制其行为,并分别覆盖单机启动、Host 网络模式、指定 hostname 与端口启动,以及 3 节点 Docker Compose 集群搭建。读完后,你将掌握 TDengine 官方镜像的启动参

gitblog_00156的博客 1069

【亲测免费】 Keil2Makefile 项目使用教程

Keil2Makefile 项目使用教程 1. 项目目录结构及介绍 Keil2Makefile 项目的目录结构如下: Keil2Makefile/ ├── Config/ │ └── Config.yml ├── Source/ │ ├── Keil2Makefile.py │ └── ... ├── README.md └── ... 目录结构介绍 Config/: 存放项目的配...

gitblog_00207的博客 1098

为什么 Aerial 能在国产电视上活下来?拆解开源电视桌面的 5 层桌面接管机制

Aerial 是一款参照 tvOS 设计的开源电视桌面(Launcher),能让小米、TCL 等国产电视开机就进入一块没有广告的干净桌面。但国产电视的固件并不打算"放行"它:有的直接拒绝安装第三方桌面,有的在待机时强杀所有第三方进程,还有的悄悄关掉你刚打开的无障碍权限。这篇文章拆解 Aerial 的 5 层桌面接管机制,看看它是怎么在国产电视上"活下来"的。 [![电视自带桌面的满屏广告与推荐流

gitblog_00826的博客 1032

contiki2.6之Makefile详细解读三

接着分析contiki系统的makefile。     之前分析到Makefile.cc2530dk的这个地方 %.upload: %.hex  $(PROG) -P $ 这里这个PROG变量现在还不明确,-P为选项,$   sensinode.serialdump:  $(SERIALDUMP) 伪目标sensinode.serialdump为调试所用,它调用命令SERIALDU

crystal736的专栏 1814

contiki2.6之Makefile详细解读五

继续上篇未完的内容。 %.hex: %.ihx      $(PACKIHX) $ $@ 这里我们寻找依赖文件hello-world.ihx的建立规则, %.ihx: $(OBJECTDIR)/%.app.rel $(CONTIKI_TARGET_MAIN) contiki-$(TARGET).lib        $(CC) $(LDFLAGS) -o $@ $(CONTIKI_TAR

crystal736的专栏 2149

QT出现[Makefile]:error2错误

QT出现[Makefile]:error2错误

nwpu_zsc的博客 5310

makefile2graph 项目常见问题解决方案

`makefile2graph` 是一个开源项目,它能够将 GNU Make 的依赖关系生成图形化表示。生成的输出可以是多种格式,包括 Graphviz/dot、Gexf-XML、PlantUML、Mermaid 等。项目的目的是帮助开发者更直观地理解复杂的 Makefile 依赖结构。该项目主要使用 Python 编程语言编写。 ## 2. 新手常见问题及解决步骤 ### 问题一:如何安装和

gitblog_00118的博客 384
上一篇: 1.编译过程与动态库静态库的实现
下一篇: 3.进程相关
许菠萝
博客等级 码龄10年 263粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值