[关闭]
@cyysu 2017-10-16T08:27:14.000000Z 字数 1762 阅读 899

Makefile-基础篇(三)

  • 时间:2017年10月16日
  • 作者:Kali
  • 邮箱:cyysu.github.io@gmail.com
  • 版本:3.0
  • 描述:Makefile-基础三,为Linux 4.4 Makefile中所遇到的知识点汇总

Makefile系列教程


前期准备

  1. Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这同过去的编译系统有很大的不同, 尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会两次扫描LinuxMakefile:首先编译系统会读取Linux内核顶层的 Makefile,然后根据读到的内容第二次读取KbuildMakefile来编译Linux内核。
  2. 前面我们以及了解了什么时Makefile,这里我们了解一下什么是Kconfig ,什么是.config
  3. Kconfig 一个文本形式的文件,其中主要作用是在内核配置时候,作为配置选项。
  4. .config 文件是在进行内核配置的时候,经过配置后生成的内核编译参考文件。
  5. 这里我们先看一下这个我们Linux内核中的Kconfig内容:
  6. #
  7. # For a description of the syntax of this configuration file,
  8. # see Documentation/kbuild/kconfig-language.txt.
  9. #
  10. mainmenu "Linux/$ARCH $KERNELVERSION Kernel Configuration"
  11. # 这里表示一个配置
  12. config SRCARCH
  13. string
  14. # 表示菜单下的配置选项,而这里从外部引入了一个环境变量SRCARCH,这个变量我们在顶层的Makefile中可以找到
  15. option env="SRCARCH"
  16. source "arch/$SRCARCH/Kconfig"
  17. Linux内核Makefile文件组成
  18. 顶层 Makefile 它是所有Makefile文件的核心,从总体上控制着内核的编译、连接
  19. arch/$(ARCH)/Makefile 对应体系结构的Makefile,它用来决定哪些体系结构相关的文件参与内核的生成,并提供一些规则来生成特定格式的内核映像
  20. scripts/Makefile.* Makefile公用的通用规则、脚本等
  21. 子目录kbuild Makefiles 各级子目录的Makefile相对简单,被上一层Makefile.build调用来编译当前目录的文件。
  22. 顶层.config 配置文件,配置内核时生成。所有的Makefile文件(包括顶层目录和各级子目录)都是根据.config来决定使用哪些文件的
  23. scripts/Makefile.*中有公用的通用规则,展示如下:
  24. Makefile.build 被顶层Makefile所调用,与各级子目录的Makefile合起来构成一个完整的Makefile文件,定义.libbuilt-in.o以及目标文件.o的生成规则。这个Makefile文件生成了子目录的.libbuilt-in.o以及目标文件.o
  25. Makefile.clean 被顶层Makefile所调用,用来删除目标文件等
  26. Makefile.lib Makefile.build所调用,主要是对一些变量的处理,比如说在obj-y前边加上obj目录
  27. Kbuild.include Makefile.build所调用,定义了一些函数,如if_changedif_changed_ruleecho-cmd
  28. 总结说:研究Linux内核编译过程的核心文件就是两个:顶层Makefile以及scripts/Makefile.build。顶层Makefile负责将各个目录生成的*.build-in.olib.a等文件链接到一起
  29. # makefile 中有用的参数
  30. make "-w"或者"--print-directory"会在Make过程中输出信息,让你看到当前的工作目录
  31. make -C 切换当前目录
  32. make -M 表示返回
  33. make -f 表示指定特定的makefile

这里我建议上面出现的知识点自己最好亲自操作一下,记得要温习这个知识点
这里我建议上面出现的知识点自己最好亲自操作一下,记得要温习这个知识点
这里我建议上面出现的知识点自己最好亲自操作一下,记得要温习这个知识点

打赏

                    支付宝                                                         微信

微信与支付宝支付

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注