linux中kernel编译所涉及的Makefile,Kconfig,.config,kbuild makefiles文件

阅读数:101 评论数:0

跳转到新版页面

分类

Linux

正文

一、概述

makefile文件包含一些规则,告诉make工具编译哪些文件以及怎样编译这些文件。

配置文件.config

是在进行内核配置后生成的中间产物

是通过make menuconfig 命令编译内核产生的与内核地相关的文件,这个文件的产生实际上是由kconfig文件所决定的,

顶层makefile

通过读取配置文件,引入或递归处理子层makefile文件、scripts/Makefile.*等其它配置文件,最终实现整个内核的构建工作。

script/Makefile.*

是一组定义公共编译规则相关的文件,这些文件定义了编译所需的公共规则及定义,

其中Makefile.build定义了.lib builtin.o以及目标文件.o文件的生成规则 ,内核目录及文件的编译链接规则也会部由Makefile.build决定。

Makefile.clean文件则定义了删除目标文件的相关规则。

Makefile.lib文件定义了内核编译的相关变量。

子Makefile

定义当前目录下的子目录、文件以及目标文件之间的依赖关系,它们被Makefile.build文件调用。

arch/$(Arch)/Makefile

是与CPU相关的Makefile文件。

二、kconfig文件:

其中主要作用是内核配置项的选择

当执行#make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取"arch/$(ARCH)Kconfig"文件来生成配置界面,这个文件就是所有配置的总入口,它会包含其他目录的Kconfig

Kconfig的语法可以参考“Documentation/kbuild/kconfig-language.txt”

1、config entry

config TMPFS_POSIX_ACL
    bool "Tmpfs POSIX Access Control Lists"
    depends on TMPFS
    select GENERIC_ACL
    help
      POSIX Access Control Lists (ACLs) support permissions for users and
      groups beyond the owner/group/world scheme.

      To learn more about Access Control Lists, visit the POSIX ACLs for
      Linux website <http://acl.bestbits.at/>.
     If you don't know what Access Control Lists are, say N.

config是关键字,表示一个配置项的开始,紧跟着的TMPFS_POSIX_ACL是配置项的名称。

bool表示配置项的类型(bool:y和n;tristate:y、n和m;string:字符串),bool后的字符串是提示信息(即配置界面上显示的字符串)。

三、kbuid文件

每一个模块都是单独被编译然后再链接的,所以这一种kbuild makefile几乎在每个模块中都存在.在这些模块文件(子目录)中,也可以使用Kbuild文件代替Makefile,当两者同时存在时,优先选择Kbuild文件进行编译工作,只是用户习惯性地使用Makefile来命名

 

 

 




相关推荐

一、概述 自从Linux内核代码迁移到Git以来,Linux内核配置/构建系统(也称为Kconfig / kbuild)已存在很长时间了。 二、Kconfig (Kernel config) menu

一、概述    Linux内核源码中含有很多个Makefile文件,这些Makefile文件又要包含其他一些文件(比如配置信息、通用规则 等)。这些文件构成了Linux的Makefile体系。

一、概述     在Linux中使用make命令来编译程序,特别是大程序,而make命令所执行的动作依赖于Makefile文件。make命令根据文件更新的时间戳来决定哪些文件需要重新编译,这可以避免编

mainline 、longterm、stable、linux-next、snapshot这些名词,都是linux kernel sou

__CONCAT,连接两个参数,##用于粘贴两个参数,#用于替换参数 #define __CONCAT(a, b) a ##

这个宏定义,可以在内核源码的script目录查看Makefile.lib文件。 # These flags are

$@ 目标的名字 $^ 构造所需文件列表所有文件的名字 $< 构造所需文件列表的第一个文件的名字 $? 构造所需文件列表中更新过的文件 (1)- make 在执行命令的时候,如

<img src="http://123.56.17.129:2177/images/linux_kernel.png" alt="" /

在编程中,一个符号symbol是一个程序的创建块,它是一个变量名或一个函数名。 内核符号表(Kernel Symbol Table) 内核并不使用符号名。它是通过

在Kernel_path/Makefile中可以查看到 # SPDX-License-Identifier: GPL