Linux内核顶层Makefile前期工作分析一

一.   Linux内核顶层Makefile

Linux 的顶层 Makefile 和 uboot 的顶层 Makefile 非常相似,因为 uboot 参考了 Linux。

二.  Linux内核-顶层Makefile前期工作

下面了解一下 Linux内核的 顶层 Makefile前期所做的工作。

1、版本号

顶层 Makefile 一开始就是 Linux 内核的版本号,如下所示:
1 VERSION = 4
2 PATCHLEVEL = 1
3 SUBLEVEL = 15
4 EXTRAVERSION =
可以看出, Linux 内核版本号为 4.1.15

2MAKEFLAGS 变量

MAKEFLAGS 变量设置如下所示:
16 MAKEFLAGS += -rR --include-dir=$(CURDIR)

3、命令输出

Linux 编译的时候也可以通过“ V=1 ”来输出完整的命令,这个和 uboot 一样,相关代码如下所示:
69 ifeq ("$(origin V)", "command line")
70 KBUILD_VERBOSE = $(V)
71 endif
72 ifndef KBUILD_VERBOSE
73 KBUILD_VERBOSE = 0
74 endif
75
76 ifeq ($(KBUILD_VERBOSE),1)
77 quiet =
78 Q =
79 else
80 quiet=quiet_
81 Q = @
82 endif

4、静默输出

Linux 编译的时候使用“make -s”就可实现静默编译,编译的时候就不会打印任何的信息, uboot 一样,相关代码如下:

87 ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
88 ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
89 quiet=silent_
90 endif
91 else # make-3.8x
92 ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
93 quiet=silent_
94 endif
95 endif
96
97 export quiet Q KBUILD_VERBOSE

5、设置编译结果输出目录

Linux 编译的时候使用“ O=xxx ”即可将编译产生的过程文件输出到指定的目录中,相关代 码如下:
116 ifeq ($(KBUILD_SRC),)
117
118 # OK, Make called in directory where kernel src resides
119 # Do we want to locate output files in a separate directory?
120 ifeq ("$(origin O)", "command line")
121 KBUILD_OUTPUT := $(O)
122 endif

6、代码检查

Linux 也支持代码检查,使用命令“ make C=1 ”使能代码检查,检查那些需要重新编译的文件。“ make C=2 ” 用于检查所有的源码文件,顶层 Makefile 中的代码如下:
172 ifeq ("$(origin C)", "command line")
173 KBUILD_CHECKSRC = $(C)
174 endif
175 ifndef KBUILD_CHECKSRC
176 KBUILD_CHECKSRC = 0
177 endif

下一篇文章继续分析 Linux内核源码的 顶层Makefile所做的准备工作。

  Linux内核顶层Makefile前期工作

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

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

相关文章

基于ENC28J60+uIP1.0+STM32的UDP Server实现,以及主动发送数据,几个关键的问题可算整明白了!

ENC28J60,是一款SPI接口的以太网PHYMAC芯片,实现以太网物理层和MAC层硬件通信。uIP是一个TCP/IP软件协议栈,实现TCP、UDP、ARP、ICMP等网络协议。STM32F103RCT6通过SPI接口与ENC28J60通讯,并移植uIP协议,实现一个小型的…

利用Linux虚拟化技术实现资源隔离和管理

在现代计算机系统中,资源隔离和管理是非常重要的,特别是在多租户环境下。通过利用Linux虚拟化技术,我们可以实现对计算资源(如CPU、内存和存储)的隔离和管理,以提供安全、高效、稳定的计算环境。下面将详细…

C++ 【2】

1.指针基础 字符&#xff1a;C 一个字符占一个字节 在C中 << 这个为插入运算符 >> 这个为提取运算符 一个变量的地址称为该变量的指针&#xff1b;如果在程序中定义了一个变量或者数组&#xff0c; 那么&#xff0c;这个变量或数组的地址&#xff08;指针…

javax.net.ssl.SSLException: Connection reset

代码 https://www.cnblogs.com/colder/p/16612582.html httpClient HttpClients.custom().setDefaultRequestConfig(config).setConnectionReuseStrategy(NoConnectionReuseStrategy.INSTANCE).setConnectionManager(poolingConnManager).build();解决NoHttpResponseExcepti…

如何将内网ip映射到外网?快解析内网穿透

关于内网ip映射到外网的问题&#xff0c;就是网络地址转换&#xff0c;私网借公网。要实现这个&#xff0c;看起来说得不错&#xff0c;实际上是有前提条件的。要实现内网ip映射到外网&#xff0c;首先要有一个固定的公网IP&#xff0c;可以从运营商那里得到。当你得到公网IP后…

Flink——Flink检查点(checkpoint)、保存点(savepoint)的区别与联系

Flink checkpoint Checkpoint是Flink实现容错机制最核心的功能&#xff0c;能够根据配置周期性地基于Stream中各个Operator的状态来生成Snapshot&#xff0c;从而将这些状态数据定期持久化存储下来&#xff0c;从而将这些状态数据定期持久化存储下来&#xff0c;当Flink程序一…

FPGA设计时序约束一、主时钟与生成时钟

​目录 一、主时钟create_clock 1.1 定义 1.2 约束设置格式 1.3 Add this clock to the existing clock 1.4 示例 1.5 差分信号 二、生成时钟generate_clock 2.1 定义 2.2 格式 2.2.1 by clock frequency 2.2.2 by clock edges 2.2.3 示例 2.2.4 自动生成时钟 2.…

MongoDB-1入门介绍

NoSQL NoSQL(NoSQL Not Only SQL)&#xff0c;意即反SQL运动&#xff0c;指的是非关系型的数据库 优点 1、对数据库高并发读写。 2、对海量数据的高效率存储和访问。 3、对数据库的高可扩展性和高可用性。 弱点&#xff1a; 1、数据库事务一致性需求 2、数据库的写实时性…

Python 使用函数作为返回值

视频版教程 Python3零基础7天入门实战视频教程 Python还支持使用函数作为其他函数的返回值 def test(bol):if bol:return addelse:return subdef add(x, y):return x ydef sub(x, y):return x - yb1 test(True) print(b1, b1(1, 2)) b2 test(False) print(b2, b2(1, 2))运…

flink集群与资源@k8s源码分析-集群

0 介绍 本文是flink集群与资源@k8s源码分析系列的第二篇-集群 1 场景 下面详细分析各用例 2 启动k8s集群 k8s集群支持session和application模式,job模式将会被废弃,本文分析session模式集群 Configuration作为配置容器,几乎所有的构建需要从配置类获取配置项,这里不显示…

nginx 配置 ssl

1.1 Nginx如果未开启SSL模块&#xff0c;配置Https时提示错误 原因也很简单&#xff0c;nginx缺少http_ssl_module模块&#xff0c;编译安装的时候带上--with-http_ssl_module配置就行了&#xff0c;但是现在的情况是我的nginx已经安装过了&#xff0c;怎么添加模块&#xff0…

将docker镜像打成tar包

# 打包 docker save -o zookeeper.tar bitnami/zookeeper:3.9.0-debian-11-r11# 解压 docker load -i zookeeper.tar

day27IO(异常File综合案例)

1. 异常 1.1 异常概念 异常&#xff0c;就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是&#xff1a; 异常 &#xff1a;指的是程序在执行过程中&#xff0c;出现的非正常的情况&#xff0c;最…

事务碰上锁好似那油锅里进了火

目录 前言 场景 代码复现 提出疑问 该怎么解决呢 1.使用编程式事务 2.将事务独立出一个方法 前言 很多时候我们谈起事务都是如虎色变&#xff0c;一想起来都是脑袋懵懵的 事务的隔离级别及传播机制是什么Spring的事务底层实现原理了解吗哪几种情况下事务会失效 …

Web jQuery 事件与其他

jQuery 事件 代码下载 jQuery 单个事件注册 jQuery 提供了方便的事件注册机制&#xff0c;其优缺点如下&#xff1a; 优点: 操作简单&#xff0c;且不用担心事件覆盖等问题。缺点: 普通的事件注册不能做事件委托&#xff0c;且无法实现事件解绑&#xff0c;需要借助其他方法…

【探索C++】C++对C语言的扩展

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

JavaScript基础知识12——运算符:算数运算符,比较运算符

哈喽&#xff0c;大家好&#xff0c;我是雷工。 以下为JavaScript基础知识学习笔记。 一、算数运算符 1、算术运算符&#xff1a;即进行数学计算的符号。 2、有哪些算数运算符&#xff1a; &#xff1a;加法 -&#xff1a;减法 *&#xff1a;乘法 /:除法 %:取余&#xff08;…

系统架构设计师-数据库系统(3)

目录 一、数据控制 1、安全性 2、完整性 3、并发控制 4、故障恢复 二、数据库设计概述 1、数据库设计关注的问题 2、数据库性能优化 3、规范化与反规范化 一、数据控制 1、安全性 2、完整性 &#xff08;1&#xff09;实体完整性约束&#xff1a;规定基本关系的主属性不能取空…

Python开发利器之VS Code

Python官方提供了一个Python集成开发环境&#xff08;IDE&#xff09;&#xff1a; IDLE (Integrated Development and Learning Environment)。 它提供了一个图形用户界面&#xff0c;可以让开发者编写、调试和执行Python程序。IDLE包含Python解释器、代码编辑器、调试器和文件…

RK3568平台开发系列讲解(工具命令篇)ADB的安装

🚀返回专栏总目录 文章目录 一、ADB介绍二、Windows 下安装 adb 工具沉淀、分享、成长,让自己和他人都能有所收获!😄 一、ADB介绍 adb 全称 Android Debug Bridge,直译过来就是 Android 调试桥,它是一个通用的命令行工具。adb 做为 Android 设备与 PC 端连接的一个桥梁…