第十一章 U-boot 顶层 Makefile 详解 (模块编译)

11.2.7 模块编译

        在 uboot 中允许单独编译某个模块,使用命令" make M=dir",旧语法"makeSUBDIRS=dir"也是支持的。

200 # Use make M=dir to specify directory of external module to build
201 # Old syntax make ... SUBDIRS=$PWD is still supported
202 # Setting the environment variable KBUILD_EXTMOD take precedence
203 ifdef SUBDIRS
204 KBUILD_EXTMOD ?= $(SUBDIRS)
205 endif
206
207 ifeq ("$(origin M)", "command line")
208 KBUILD_EXTMOD := $(M)
209 endif
210
211 # If building an external module we do not care about the all: rule
212 # but instead _all depend on modules
213 PHONY += all
214 ifeq ($(KBUILD_EXTMOD),)
215 _all: all
216 else
217 _all: modules
218 endif
219
220 ifeq ($(KBUILD_SRC),)
221 # building in the source tree
222 srctree := .
223 else
224     ifeq ($(KBUILD_SRC)/,$(dir $(CURDIR)))
225         # building in a subdirectory of the source tree
226         srctree := ..
227     else
228            srctree := $(KBUILD_SRC) 
229 endif
230 endif
231 objtree     := .
232 src     := $(srctree)
233 obj     := $(objtree)
234
235 VPATH    := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
236
237 export srctree objtree VPATH

        第 203 行 判 断 是 否 定 义 了 SUBDIRS , 如 果 定 义 了 SUBDIRS , 变 量KBUILD_EXTMOD=SUBDIRS,这里是为了支持老语法“make SUBIDRS=dir”
        第 207 行判断是否在命令行定义了 M,如果定义了的话 KBUILD_EXTMOD=$(M)。
        第 214 行判断 KBUILD_EXTMOD 是否为空,如果为空的话目标_all 依赖 all,因此要先编译出 all。否则的话默认目标_all 依赖 modules。要先编译出 modules,也就是编译模块。一般情况下我们不会在 uboot 中编译模块,所以此处会编译 all 这个目标。
        第 220 行判断 KBUILD_SRC 是否为空,如果为空的话就设置变量 srctree 为当前目录,即srctree 为“.”。一般不设置 KBUILD_SRC。
        第 231 行设置变量 objtree 为当前目录。
        第 232 和 233 行分别设置变量 src 和 obj,都为当前目录。
        第 235 行设置 VPATH。
        第 237 行导出变量 scrtree、objtree 和 VPATH。

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

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

相关文章

网站排名不升反降?揭秘SEO中常见的降权触发点!

在SEO(搜索引擎优化)中,网站的权重是影响其在搜索引擎中排名的重要因素。然而,有许多原因可能导致网站被降权,以下是一些常见的原因: 1. 网站内容过于雷同或不相关性:如果网站的内容大量复制自其他网站,或…

笔试:4.6美团笔试(硬件开发方向)

二十道选择两道算法题。 选择就不说了,硬件方面目前了解较少。 两道算法题都过了,第一题很简单没有什么好讲的。 第二题看着题目以为会很复杂,没想到一遍过。 小美有一个由 n 个互不相等的正整数构成的数组 a,但她一不小心把 a…

Three 之 three.js (webgl)GLSL-Card 中文手册相关知识

Three 之 three.js (webgl)GLSL-Card 中文手册相关知识 目录 Three 之 three.js (webgl)GLSL-Card 中文手册相关知识 一、简单介绍 二、GLSL 中文手册 1、基本类型 2、基本结构和数组 3、向量的分量访问 4、运算符 5、基础…

<c++基础(5)>整数溢出

整数溢出 在工程中遇到问题,两个int类型加减结果赋值给double类型时提示溢出风险: //sum和sumb都是int类型, double a double(sum - sumB);这里发生了整数溢出,整数溢出是指当计算结果超出了整数类型所能表示的范围时发生的情况…

南京观海微电子---Vitis HLS设计流程(实例演示)——Vitis HLS教程

1. 前言 课时2我们介绍了Vitis HLS的设计流程,如下图所示: 算法或软件的设计和仿真都基于C/C,通过HLS平台导出打包好的IP RTL代码,最后将该打包的IP加入到主工程使用。 本课时,我们通过一个具体的实例,演示…

Dapr(三) Dapr核心组件的使用一

结合前两期 Dapr(一) 基于云原生了解Dapr(Dapr(一) 基于云原生了解Dapr-CSDN博客) Dapr(二) 分布式应用运行时搭建及服务调用(Dapr(二) 分布式应用运行时搭建及服务调用-CSDN博客) 下篇推出dapr服务注册与发现,dapr组件绑定,dapr Actor功能。 目录 1.…

中颖51芯片学习2. IO端口操作

一、SH79F9476 I/O端口介绍 1. 特性 SH79F9476提供了30/26位可编程双向 I/O 端口;端口数据在寄存器Px中;端口控制寄存器PxCRy是控制端口作为输入还是输出;端口作为输入时,每个I/O端口均带有PxPCRy控制的内部上拉电阻。有些I/O引…

超详细!211页网络协议与管理,看完终于明白了(建议收藏)

与其说计算机改变了世界,不如说是计算机网络改变了世界。作为计算机网络通信实体之间的语言,网络通信协议对计算机正常通信起着极大的作用。 那么到底什么是网络协议与管理呢?今天给大家分享一份211页网络协议与管理文档,包含概念…

碧桂园服务净利降两成,关联交易收入仅占2.9%,发力增值服务充电桩日进超10万

自2018年分拆上市以来,碧桂园服务经历过非常高速的发展,曾是物管市场的“并购王”,但从2023年开始,希望从外延式的增长向内生式增长转型,将往期的经验与教训,通过投后管理沉淀下来,向高质量发展…

nginx多https证书配置精简

其实有很多方式,网上看到一个这个方法,给大家介绍一下。 首先,开启支持-TLS SNI support Nginx开启单IP多SSL证书支持-TLS SNI support Nginx支持单IP多域名SSL证书需要OpenSSL支持,首先需要编译安装一个高版本的openssl。 检查…

04 Python进阶:MySQL-PyMySQL

什么是 PyMySQL? PyMySQL 是一个用于 Python 的纯 Python MySQL 客户端库,提供了与 MySQL 数据库进行交互的功能。PyMySQL 允许 Python 开发人员连接到 MySQL 数据库服务器,并执行诸如查询、插入、更新和删除等数据库操作。 以下是 PyMySQL …

自动驾驶领域中的感知,决策,控制

目录 一、自动驾驶领域感知决策控制概论 二、自动驾驶感知 三、自动驾驶决策 四、自动驾驶控制 一、自动驾驶领域感知决策控制概论 1.感知(Perception):感知是指系统通过各种传感器来感知周围环境的能力,包括识别和理解道路、…

第29篇:秒表计时器

Q:本期我们采用计数器来实现秒表计时器,循环进行0~9计时。 A:在数码管HEX0上循环从0到9计数,间隔时间为1s,使用计数器实现1s时间间隔。 DE2-115开发板提供了50MHz时钟,触发器直接以50MHz信号作为同步时钟…

过亿级别的用户数据如何检查用户名是否存在?

目录 引言用户名存在性检查的挑战用户规模庞大带来的性能挑战数据一致性与并发性问题防止恶意行为的挑战 常见的解决方案基于数据库的方案基于缓存的方案基于分布式系统的方案基于搜索引擎的方案 案例分析与实践经验分享社交媒体平台的用户名检查方案 引言 随着互联网的普及和数…

redis的Bitmaps详细介绍

Redis的 Bitmaps(位图)并不是一种特殊的数据类型,而是字符串的二进制操作。虽然在 Redis 内部,BitMaps 是以字符串数据类型来存储的,但是它们却可以使用一些特殊的命令进行操作。如下是关于Redis Bitmaps的详细介绍&am…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(9)复发

PS从入门到精通视频各类教程整理全集,包含素材、作业等 最新PS以及插件合集,可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制,今天先分享到这里,后续持续更新 第一课 ——第三课素材文件 https://www.alipan.c…

怎么在UE过场动画中加入振动效果

我们已经学会了怎么在游戏中加入振动效果,比较典型的交互场景如:在开枪时让手柄同步振动,实现起来真的很简单,就是定义场景和事件,然后在游戏事件发生时播放特定的振动资源文件,跟播放音效是极其相似的&…

探索Linux的挂载操作

在Linux这个强大的操作系统中,挂载操作是一个基本而重要的概念。它涉及到文件系统、设备和数据访问,对于理解Linux的工作方式至关重要。那么,挂载操作究竟是什么,为什么我们需要它,如果没有它,我们将面临什…

2024年华为OD机试真题-找数字-Java-OD统一考试(C卷)

题目描述: 小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数n (1<=n<=1e9),小扇需要找到一个比n大的数字m,使得m和n对应的二进制中1的个数要相同(如4对应二进制100,8对应二进制1000,1的个数都为1),现在求m的最小值。 输入描述: 输入:第一行输入一个正整数…

【实时监控主机与某个IP的网络连接情况】

Python脚本 写个脚本监控主机与某几个IP的连接情况&#xff0c;发现存在这种连接的&#xff0c;记录连接起始时间、源IP源、端口、目的IP、目的端口等信息 import os import time import subprocess from typing import List# 目标IP列表 TARGET_IPS ["192.168.1.1&quo…