当前位置:网站首页>五 其它目标和通用选项的介绍
五 其它目标和通用选项的介绍
2022-07-16 11:33:00 【lgjjeff】
由于第四章和第五章的内容比较少,故这里将它们放到一起发布了。本篇内容主要包括kernel makefile支持的一些其它目标和通用选项的简单介绍。
四 其它目标的执行过程
kernel makefile除了支持编译vmlinux,modules之外,还支持多种其它目标的编译。由于它们相对比较简单,故这里只列举一些它们的用法,而不再对其实现一一分析。
我们可以根据make help中简要看下其支持的目标:
(1)all
它包含了vmlinux和modules两部分
(2)modules_install
它会将编译好的modules安装到指定目录,对于交叉编译,这个没什么用处
(3)firmware_install
通上面一样,它会将firmware安装到指定的目录
(4)dir/
它支持编译某个目录下的所有目标
(5)dir/file.[ois]
它支持编译某个目标下的某个文件,且可以只进行预处理生成.i文件,或预处理并编译生成.s文件,或者预处理,编译并汇编生成.o文件
(6)dir/file.lst
这个除了编译出.o文件,还执行了一个脚本scripts/makelst脚本,用来做什么的我也不懂
(7)dir/file.ko
它用于编译某个目录下的ko文件
接下来我们再看一类特殊的清理目标,在kernel makefile有三种clean的方式,它们的命令分别为:
(1)make clean
(2)make mrproper
(3)make distclean
make clean的定义如图4.1,它的主要工作是清除大部分编译过程中产生的文件,但会保留config文件,因此,即使运行了make clean,在该环境下编译外部模块也是没问题的。
图4.1
make proper的定义如图4.2,可以看出它依赖于clean,并且还会依赖archmrproper和mrproper-dirs。其中archmrproper是arch相关的,若某些arch需要装载mrproper时做一些arch目录下相关的清理工作,则会定义该规则。mrproper-dirs的定义如图4.2,其中MRPROPER_DIRS和MRPROPER_FILES的定义如图4.3。即它还会删除配置相关的文件,一些编译过程中产生的头文件,版本文件,security相关的文件等。
图4.2
图4.3
distclean目标的定义如图4.4,它依赖于mrproper,此外还删除了orig文件,reg文件,bak文件等。因此make distclean是清理的最彻底的,而make clean其实保留了配置文件,在该基础上重新编译某个目标,不需要运行make xxxconfig重新进行配置。
图4.4
五 通用命令行选项用法
通用命令行选项主要提供了一些扩展功能,让我们的编译更加具有灵活性,有些选项对于我们平常的代码维护或者定位问题都会很有帮助,因此这里对它们的一些用法做一简要介绍。
选项V的定义如图5.1,默认情况下该值为0,此时变量Q定义为@,因此makefile不会打印出其执行的命令语句。当命令行带有参数V=1时,Q的定义会被修改成空,因此makefile的编译命令也会输出到屏幕上。当我们debug出现编译问题,需要debug的时候,该选项会很管用。
图5.1
选项O的定义如图5.2,它定义了目标文件的输出目录,具体的执行过程如图5.3,即它会重新调用makefile,并进入选项O定义的目录下编译。它的主要作用是不会污染源文件,编译的中间文件和目标文件都存放在指定的目录下,从而保证源文件的干净。
图5.2
图5.3
选项C的定义如图5.4,它的主要作用是对代码进行静态检查。如图中注释,默认时该参数被设置为0,即不进行检查。当C设置为1时,会对需要重新编译的代码做检查。若C设置为2时,则会对所有的代码做静态检查,不论其是否需要被重新编译。代码的静态检查可以在该过程中提前发现一些代码的逻辑问题等,使其不需要等到运行时才暴露出来,能起到提早发现和提早修复问题的作用。
图5.4
边栏推荐
- I found an artifact that can efficiently manage interface documents
- 【付費推廣】常見問題合集,基礎推廣操作FAQ 2
- [Huawei online battle] download and run Huawei's official unity example code, prompting authentication failure and returning error code 100114
- Etcd database source code analysis -- etcdserver bootstrap to remove v2store
- 宝立食品上交所上市:年营收15.78亿 市值58亿
- 从物理转 AI 、战数据库,95后程序员的职业选择
- OSPF(Open Shortest Path First开放式最短路径优先)防环以及计算错误带来的组网应用隐患
- Analysis and summary of three technical solutions to realize app automation
- NJUPT 《信安数基》第 11 章解题攻略
- [HMS core], [FAQ], [Health Kit] encountered some small problems in the process of integrating sports health services. Today, I share with you (Huawei watch, Bracelet + sports health service problems C
猜你喜欢

Stc8h development (XIV): I2C drive rx8025t high-precision real-time clock chip

【快应用】text组件里的文字很多,旁边的div样式会被拉伸如何解决

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

Ceph分布式存储性能调优(六)

无心剑中译扎加耶夫斯基《试着赞美这残缺的世界》

生信周刊第36期

Stc8h Development (XIV): I2C Drive rx8025t high precision Real time clock chip

Introduction to leetcode special dynamic planning

关于TCP/IP协议漏洞的安全措施

Configure typera+picgo+aliyun OSS service
随机推荐
thymeleaf介绍与简单应用
Pytest+allure custom report
调和级数是发散的
Basic permission management of Gerrit
Stc8h Development (XIV): I2C Drive rx8025t high precision Real time clock chip
Implementation of distributed cronab based on cron library extension
[machine learning] logic regression principle and code
Postgresql源码(5)缓冲区管理
I found an artifact that can efficiently manage interface documents
873. 最长的斐波那契子序列的长度
mixin\插件\scoped样式
[quick application] PX and VP unit conversion
NJUPT 《信安数基》第 11 章解题攻略
How to build cloud ide Theia on kubernetes platform
Uncaught Error: Rendered fewer hooks than expected. This may be caused by an accidental early return
【学习记录】暂时取消Tpro的控制权(简易)
[HMS core] [wallet kit] [solution] why can't Huawei wallet's client sample code run
Etcd database source code analysis -- etcdserver bootstrap initialization cluster and raft
C# 程序调试和异常处理(try catch)
Using C language to realize the odd number problem of 0-10 -- Original