`
imaginecup
  • 浏览: 87425 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Makefile和Kconfig认识

阅读更多
linux2.6内核的配置系统由以下3个部分组成:
Makefile 定义linux内核的编译规则
配置文件Kconfig :给用户提供配置选择的功能
配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面

linux内核中增加程序需要完成以下3项工作:
将编写的源代码复制到linux内核源代码的相应目录。
在目录的Kconfig文件中增加新源代码对应项目的编译配置选项。
在目录的Makefile文件中增加对新源代码的编译条目。

Makefile文集是整个内核工程编译命令的集合。它根据配置情况,构造出需要编译的内核源码文件列表,然后分别编译,并把目标代码链接到一起,形成内核二进制文件。也就是说Makefile只是存储了源码文件构建目标文件的规则,具体是否按着规则去执行还要看那些配置变量。

我们进行make menuconfig时,会出现一个配置菜单,它是由各层Kconfig文件组成。Kconfig文件是以分布式的方式位于源码的各个子目录当中。最底层的Kconfig位于源码目录下的arch/x86/Kconfig。由此入口,使用source语句把需要的子Kconfig文件加入到上级目录的 Kconfig中,以此递归下去。Kconfig文件控制配置菜单是否出现新驱动的配置选项。用户通过Kconfig文件产生的配置选项,来控制对新驱动的配置。

在内核配置make menuconfig时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。

Makefile文件

obj-$(CONFIG_EXT3_FS) += ext3.o

ext3-y  := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
           ioctl.o namei.o super.o symlink.o hash.o resize.o ext3_jbd.o

ext3-$(CONFIG_EXT3_FS_XATTR)     += xattr.o xattr_user.o xattr_trusted.o
ext3-$(CONFIG_EXT3_FS_POSIX_ACL) += acl.o
ext3-$(CONFIG_EXT3_FS_SECURITY)  += xattr_security.o

CONFIG_变量来决定文件的编译方式,它存储在.config文件中,其中Y表示编译入内核,M表示编译为内核模块,其他不会被编译

如果一个模块有多个文件组成,这时候应采用模块名家-objs后缀或者-s后缀来定义模块的组成文件。

Kconfig
config 关键字定义新的配置选项,这后的几行定义了该配置选项的树形,包括类型,数据范围,输入提示,依赖关系(反向依赖关系),帮助信息和默认值等。
 
分享到:
评论

相关推荐

    Linux From Scratch

    《Linux From Scratch》是Linux系统构建的一门深度学习课程,主要涵盖了Linux文件系统与目录的组织结构、Linux内核的Makefile和kconfig解析、U-BOOT的目录结构与系统启动流程,以及软件包的配置、编译和安装等多个...

    嵌入式Linux开发教程(下册)-周立功著

    此外,书中对Linux内核中的Makefile文件进行了详细讲解,包括顶层Makefile和各个子目录中的Makefile的配置和使用。Makefile是管理源代码编译的重要文件,它定义了编译的规则和目标。顶层Makefile主要负责整个Linux...

    Linux内核源代码情景分析

    书中可能涵盖makefile、Kconfig、内核模块的编译方法,以及使用gdb等工具进行内核调试的技巧。 通过对《Linux内核源代码情景分析》的研读,读者不仅可以掌握Linux内核的工作原理,还能培养出对操作系统设计的深刻...

    linux字符设备驱动程序学习笔记

    要将驱动程序编译进内核,需要修改两个文件:Kconfig 和 Makefile。首先,需要将驱动程序源文件放到内核源代码相应的目录下,然后修改 Kconfig 文件,添加驱动程序的配置项。接着,需要修改 Makefile 文件,添加驱动...

    s3c2410_uda1341 linux驱动程序

    开发者需要根据目标系统的具体配置,修改`makefile`和`Kconfig`文件,以便在Linux内核编译时将该驱动程序包含进去。 移植驱动程序时,首先需要确保目标系统的内核版本与驱动程序兼容。描述中提到的是针对Linux ...

    Linux内核修炼之道

    - **KERNEL地图:KCONFIG与MAKEFILE**:讲解了如何利用`KCONFIG`和`MAKEFILE`来配置和编译Linux内核。 - **MAKEFILE不是MAKELOVE**:强调了在配置内核过程中应该采取的专业态度。 - **利用KCONFIG和MAKEFILE寻找目标...

    霓虹灯闪动设计实验报告.docx

    3. 修改驱动配置文件,如Kconfig、mach-itop4412.c、Makefile、my_led.c,以支持自定义的LED控制功能。 4. 编译my_led测试程序,生成可执行文件。 5. 通过串口连接和脚本烧写将修改后的内核和驱动程序安装到开发板上...

    《Linux内核修炼之道》精华版之方法论

    1. **全面了解**:通过阅读内核文档、经典书籍,以及参与内核社区,对Linux内核有全面的认识和了解。文档建议初学者从阅读README文件、理解KCONFIG与MAKEFILE配置开始,逐步熟悉内核源码。 2. **兴趣导向**:根据...

    Linux内核修炼之道精华版之方法论

    - **KCONFIG与MAKEFILE**:通过这两个文件可以了解内核配置项以及编译规则。 - **从初始化函数入手**:通过分析内核的初始化过程,可以更深入地理解各个子系统的运作机制。 #### 内核学习的心理问题 这部分讨论了...

Global site tag (gtag.js) - Google Analytics