【Makefile】笔记

news2025/1/23 9:09:19

正点原子Linux驱动13.4.1节,通用Makefile疑难点解释

聊聊 SOBJS := $(patsubst %, obj/%, $(SFILENDIR:.S=.o)) 的作用

在这里插入图片描述

聊聊变量替换语法

在 Makefile 中,变量替换语法可以用来对变量的值进行修改和转换。有以下几种不同的变量替换语法:

  1. $(var:a=b):将变量 var 中所有以 a 结尾的字符串替换成以 b 结尾的字符串。

  2. $(var:.c=.o):将变量 var 中所有以 .c 结尾的字符串替换成以 .o 结尾的字符串。

聊聊 VPATH := $(SRCDIRS)的作用

在 Makefile 中,VPATH 变量用于指定源文件搜索路径。它的值是一个包含多个路径的字符串列表,每个路径之间用冒号分隔。当 Makefile 需要查找源文件时,它会按照 VPATH 中指定的路径顺序依次搜索。

例如,如果 VPATH 的值为 “src:lib”,那么当 Makefile 需要查找一个名为 foo.c 的源文件时,它会先在 src 目录中查找,如果找不到,再在 lib 目录中查找。这种方式可以使得 Makefile 可以在多个目录中查找源文件,从而避免在 Makefile 中写过多的路径信息。

需要注意的是,VPATH 只适用于源文件的搜索,对于目标文件的生成路径并没有影响。如果需要指定目标文件的生成路径,可以使用规则中的 $@ 变量来指定。

聊聊 $(CC) -Wall -nostdlib -c -O2 $(INCLUDE) -o $@ $< 的作用

在 Makefile 中,这个语句是一个编译规则,用于将一个 C 源文件编译成目标文件。

具体来说,这个语句包含了以下几个部分:

  1. $(CC):表示使用的 C 编译器,这是一个 Makefile 变量,通常默认为 gcc。

  2. -Wall:表示开启所有警告信息。

  3. -nostdlib:表示不使用标准库。

  4. -c:表示只编译,不链接。

  5. -O2:表示开启优化等级 2,可以提高程序的执行速度。

  6. $(INCLUDE):表示需要包含的头文件路径,这是一个 Makefile 变量。

  7. -o @ :表示输出文件的名称, @:表示输出文件的名称, @:表示输出文件的名称,@ 是一个自动变量,表示目标文件名。

  8. $<:表示依赖文件列表中的第一个文件,即源文件名。

这个编译规则的作用是将一个 C 源文件编译成一个目标文件,编译过程中会开启所有警告信息,不使用标准库,只编译不链接,开启优化等级 2,包含指定的头文件路径,输出目标文件到指定的目录,并以源文件名为基础生成目标文件名。

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

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

相关文章

二分类结局变量Logistic回归临床模型预测(一)——介绍

本节讲的是二分类结局变量的临床模型预测&#xff0c;与之前讲的Cox回归不同&#xff0c;https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/…

C++类与对象this指针

文章目录 前言一&#xff0c;类1.类的引入2.类的定义3.类的作用域4.类的访问限定符及封装封装访问限定符面试题 二&#xff0c;this指针1.this指针定义2.this指针的特性 前言 从此篇往后&#xff0c;开始了C的类和对象的篇章&#xff0c;嗯就说这么多 一&#xff0c;类 1.类的…

Microsoft Forms的應用(文行版)

Microsoft Forms 功能是發起大眾投票及反饋數據的軟件。 首先要開啟Microsoft Forms 先要取得Microsoft Teams 的應用程式&#xff0c;在下載Microsoft Teams 後&#xff0c;可在最左邊的工具列選擇《應用程式》&#xff0c;然後從中開啟Microsoft Forms 就可以了。 看到Micr…

Java如何生成随机数?要不要了解一下

目录 前言一、Random类介绍二、Random类生成随机数1.生成随机数2.nextInt()方法 三、使用场景四、官方提示总结 前言 我们在学习 Java 基础时就知道可以生成随机数&#xff0c;可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍 Java 随机数。 一、Random类介绍 在 Ja…

C++篇----构造函数和析构函数

在很多时候&#xff0c;当写了初始化&#xff0c;动态开辟的&#xff0c;需要写销毁函数&#xff0c;写了销毁函数之后&#xff0c;但是却忘记了调用这些函数&#xff0c;忘记调用初始化函数还好&#xff0c;编译器会报错&#xff0c;但是如果是忘记调用销毁函数&#xff0c;那…

社科院与美国杜兰大学金融管理硕士项目——选择在职读研是正确的吗

这个世界上&#xff0c;根本没有正确的选择。我们只不过要努力奋斗&#xff0c;使当初的选择变得正确。最近有咨询项目的同学总是在纠结是否要在职读研&#xff0c;在职读研是否是一条正确的路。当我们为此纠结时&#xff0c;其实只有一条路&#xff0c;那就是选择向前走。往前…

有我和另一个00后卷王后,公司老油条们破防了吗?

今年软件测试行业的内卷现象越来越明显&#xff0c;比2022年疫情那会更甚&#xff0c;越来越多的人涌入这个行业&#xff0c;而想要获得更好的待遇和机会&#xff0c;不断提升自己的技能栈成为了测试老油条不得不面对的问题。 不论是哪个级别的测试工程师&#xff0c;面试官都…

络达开发---- AB1562x左右两侧同一按钮不同功能

开发平台&#xff1a;AB1562X SDK版本&#xff1a;V1.5.2 说明&#xff1a;AB1562X支持TWS&#xff0c;左右两个的耳机的按钮在硬件上是芯片的同一个IO口&#xff1b;那如何实现左右按键对应动作&#xff21;&#xff0c;右侧按钮对应动作B呢&#xff1f;即左右两侧同一按钮的…

【创建一个网页,实现猜数字游戏】

要求如下 逻辑如下&#xff1a; 一个button按钮第二行中&#xff0c;打印“请…数字” 然后一个 输入文本框 然后一个 按钮第三行 打印 “已经猜的次数” 然后打印 猜的次数结果显示 猜大了 猜小了 猜对了 在script中 获取button按钮、输入的数据、记录count的值&#xff…

vue3——咸鱼仔

vue3——咸鱼仔 vue3——咸鱼仔P1.前言 【00:45】P2.创建项目 【02:09】P3.代码格式化 【01:37】P4.commit规范 【01:57】P5.强制commit 【02:41】P6.强制代码规范 【01:03】P7.按需导入elementplus 【02:58】P8.vue3.2新特性 【01:42】P9.初始化项目 【02:47】P10.登录页面静态…

融合开源软件治理经验,助力科技企业规避开源风险

随着开源软件的普及&#xff0c;越来越多的科技企业依赖开源软件实现业务的高速发展&#xff0c;但开源软件存在的安全合规问题&#xff0c;已成为科技企业面临的主要风险之一。 开源网安十年发展&#xff0c;通过为百度、大疆、金蝶等科技企业提供优质的软件安全产品与服务&a…

【虚幻引擎|UE4】TArray在C++中的使用

简介 TArray 类似于STL的vector&#xff0c;可以自动扩容&#xff0c;因为提供了相关操作函数&#xff0c;所以当作队列、栈、堆来使用也很方便&#xff0c;是UE4中最常用的容器类。其速度快、内存消耗小、安全性高。TArray 类型由两大属性定义&#xff1a;元素类型和可选分配…

smardaten社区版/专业版发布,查看特性与区别!

为满足个人和中小团队开发者需求&#xff0c;近期smardaten正式推出社区版与专业版&#xff0c;其中社区版为免费版本&#xff0c;支持一键下载安装。 值得一提的是&#xff0c;本次社区版和专业版&#xff0c;均支持独立私有部署&#xff0c;并进行商业应用交付。 熟悉smard…

Linux网络——Shell编程之条件语句—if 、case

Linux网络——Shell编程之条件语句—if 、case 一、条件测试1.test命令2.文件测试3.整数值比较4.逻辑测试 二、if语句1.单分支结构2.双分支结构3.多分支结构4.实践操作 三、case分支语句1.case多分支结构2.实践操作 一、条件测试 1.test命令 测试表达式是否成立&#xff0c;若…

信息收集(二)IP信息收集

信息收集&#xff08;一&#xff09;域名信息收集 什么是CDN&#xff1f; 内容分发网络&#xff08;CDN&#xff09;&#xff1a; 是指企业利用分布在不同区域的节点服务器群组成流量分配管理平台&#xff0c;为用户提供内容分散存储和高速缓存服务 在渗透测试过程中&#x…

大数据好学么

大数据本质上是海量数据。 以往的数据开发&#xff0c;需要一定的Java基础和工作经验&#xff0c;门槛高&#xff0c;入门难。 如果零基础入门数据开发行业的小伙伴&#xff0c;可以从Python语言入手。 Python语言简单易懂&#xff0c;适合零基础入门&#xff0c;在编程语言…

kafka集群模拟单节点故障

这里通过kafka manage来展示节点宕机效果 现在三台主机节点均正常 topic正常识别到三个broker leader也均匀分配到了三个broker上 现在把节点id为0的主机模拟宕机 可以通过以上两张图片看到每个topic现在只识别到了两个broker节点,broker id为0的节点已经被剔除掉了 isr列…

SpringBoot框架(邮件发送Mail|持久层框架JPA|Extra前后端分离跨域处理|接口管理Swagger)这一篇就够了(超详细)

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;老茶icon &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;计…

【Python表白集】没有哪个女孩子 不喜欢花 不喜欢惊喜:“一束花的仪式感,永远不会过时呢~”(turtle绘图代码)

导语 “我想和你在一起虚度时光&#xff0c;坐看云卷云舒&#xff0c;花开花落” 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 又快到了一年小长假的时候啦&#xff0c; 单身狗的你们还好嘛…

如何有效使用渲染农场?防止渲染出错的7个方法!

如何使用渲染农场&#xff1f;又如何有效地使用渲染农场&#xff0c;使用云渲染农场时出错怎么办&#xff1f; 众所周知我们可以在任意的笔记本或者终端PC上面来创作 3ds Max 场景&#xff0c;但是实际渲染是这样吗&#xff1f;其实不然&#xff0c;这其中的差距不是一星半点&…