linux内核的Makefile和Kconfig,以及如何在内核中添加自己的代码

一、linux内核中是如何将各个  目录树  中的文件组织起来编译的?并且根据需要编译特定功能的内核?

  在linux内核中,有这样两种文件:MakefileKconfig。这两种文件分布在内核目录的各个级目录内(每一级都对应都有),分布在各个级的Kconfig决定了内核要实现某一功能,每一步该怎么走,每个Kconfig描述了所属目录源文档相关的  内核配置菜单,就是我们执行make menuconfig命令后产生的配置菜单,这个菜单包含(连接)多层,每个层次都是由各个目录中的Kconfig产生的。我们可以根据需要来选择如何编译内核(裁剪),然后将配置的结果保存到“.config”文件内。最后在执行Makefile时根据 .config 的结果理实现内核的编译。

二、Kconfig

  Kconfig用来加链接各个层的树枝

  1、结构+格式:

    a)、非最后一层:

      menu "Device Drivers"

      source "driver/heihei/Kconfig"(顶层到该层的目录/本层的Kconfig)

      endmenu

    b)、最后一层

      menu  “菜单描述

      config  XXXXXX

        bool  “具体功能描述”---类型定义

        depends on  依赖条件

        default  x(根据bool/int/hex/tristate/string而定)

        help

          解释说明

      endmenu

  2、变量定义:

    bool(布尔类型)  y/nintstring;核心;tristate  n/m/y(移除/模块/内建)

    config HAHA

      bool “HAHA test module”

    bool类型只能选中和不选中;

    tristate:多了一个编译成模块,当编译成内核模块,则会在.config文件内生成一个CONFIG_HAHA=m的配置最后编译后回生成一个在开发板上可执行的.ko文件;假如内建就直接编译成内核--.config内生成CONFIG_HAHA=y

  3、依赖depends on

    即一个限制条件,意识是  此菜单的出现是否依赖与另一个定义

    效果是:如果   依赖菜单   没有被选到 则  该菜单不会出现

  4help解释说明该菜单的功能

四、Makefile:

  1、做嵌入式开发,我们一般操作Makefile是操作drivers里面的东西,来达到对树枝的构建,将驱动做到菜单内

  a)、非最后一层

    obj-y    += heihei/(+=目录)

  b)、最后一层的

    obj-$(CONFIG_XXX) += xxx.o(+=相当于增加树枝)

五、 .config

  对与内核来说,.config的执行是编译的第一步。.config文件位于源代码根目录下,描述了所有内核配置选项。可以借助内核配置工具来选择这些选项。每个内核配置选项都有对应的名字和变量值--n/m/y。当配为y就会编译到内核 代码中(系统中),当配为m就会以模块的方式编译到内核中。

  代码都有区分:对应到菜单

  所有的配置都会产生在上述菜单中

六、向自己内核中添加程序

  1:文件准备

    1.1、将编写好的源代码复制到linux内核源代码相应的目录中。

    1.2、在该目录中的Kconfig文件中增加新源代码对应的编译配置选项

    1.3、在该目录中的Makefile文件中添加信代码的编译语句

  2、在linux内核drivers/目录中增加目录和子目录

    myDriver$ tree

    |– Kconfig

    |– Makefile

    |– key

    |   |– Kconfig

    |   |– Makefile

    |   `– key.c

    |– led

    |   |– Kconfig

    |   |– Makefile

    |   `– led.c

    `— test.c

  分别制作对应的Makefile和Kconfig文件

转载于:https://www.cnblogs.com/pijiudu/p/7739755.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值