点击打开链接

在进行Android L-》M升级时遇到打印:

Root cause is probably that a dependancy declared in Kconfig is not respected
or config was added in Kconfig but value not explicitly added to defconfig.
Recommanded method to generate defconfig is menuconfig tool instead of manual edit.

找了好多资料,上面的提示就是移植的时候将很多config配置项弄错了,有的没有定义的配置项弄到***defconfig中去了。

简单概要:
Makefile和Kconfig存在系统中的多个子目录中, Kconfig是定义配置项,Makefile是建立配置项生成法则。
.config存在根目录中,一般通过menuconfig生成。一般在/arm/configs/xxxxxx_defconfig目录下的文件是系统默认配置,android编译的时候会将这个文件生成.config文件,同时编译系统会根据各个Kconfig的配置项生成一个.config.old文件,如果这两个文件不冲突则编译继续进行,否则提示上面的错误。

所以,可以根据生成的 .config(在kernel根目录下)来修改xxxdefconfig文件,或者修改Kconfig中某些项的默认值或者定义规则。

在linux中和编译有关的配置文件有:
makefile:
Kconfig:
.config:全局的配置文件,由它决定makefile来编译哪些文件,一般是自动生成。 
在实际判断使用哪些配置选项时,不会直接修改.config文件,而且通过使用图形化界面(menuconfig)来配置内核,并把配置的结果保存成.config文件。
在编译内核时,就根据makefile和.config选择编译哪些文件。

每个开发平台都有一个可供参考的配置文件,如arch/arm/configs/xxxxxx_defconfig目录下的文件,都是硬件厂商提供的,针对硬件平台的配置文件。
当我们执行make menuconfig就会读取源码目录下所有Kconfig内容,并生成界面中的选项菜单

关于kconfig的语法,在内核的开发文档中有详细的介绍,具体可以参看\Documentation\kbuild\kconfig-language.txt

Kconfig语法
 menu/endmenu     生成一个菜单,以endmenu结束
 menuconfig       定义一个配置选项,在这个选项下面还有一个子菜单
 config           定义一个配置选项
 choice/endchoice 定义一个选择项
 source           调用子目录下的Kconfig,生成一个子菜单
 
 菜单属性:
 bool     y/n: 
 tristate y/n/M: M表示编译成模块
 string
 hex
 int
 
 配置选项之间的依赖关系:
 depend on:某选项依赖于另外一个选项生成
 select   :反向依赖关系,该选项选中时,同时选中select后面定义的那一项
 requie
 默认值: default(默认y/n/m等值)
 输入提示:prompt
 帮助信息:help
 
 Makefile

1.顶层的Makefile文档读取 .config文档的内容,并总体上负责build内核和模块。
2.Arch Makefile则提供补充体系结构相关的信息。 
3.scripts目录下的Makefile文档包含了任何用来根据kbuild Makefile 构建内核所需的定义和规则。
            其中.config的内容是在make menuconfig的时候,通过Kconfig文档配置的结果,在/Documentation/kbuild目录下有详细的介绍有关kernel makefile的知识。
举个例子:

假设想把G-sensor LSM303D驱动code加载到工程中,配置内核时该怎么办呢?
1:将您写的lsm303d.c 文档添加到/driver/misc/ 目录下。
2:修改/driver/misc/ 目录下的kconfig文档:
[html] view plain copy

config SENSORS_LSM303D  
            tristate "LSM303 sensor driver"  
            depends on I2C=y  
            help  
              Say yes here to support the sensor

3:修改该目录下makefile文档。
添加code:
[html] view plain copy

obj-$(CONFIG_SENSORS_LSM303D)   += lsm303d.o

从上述分析知道CONFIG_SENSORS_LSM303D 是从.config 中读出的。
4.配置kernel下configs/XXXX_defconfig文件
添加code:
[html] view plain copy

CONFIG_SENSORS_LSM303D=y

当您编译内核时,将会读取.config文档,当发现CONFIG_SENSORS_LSM303D=y,系统在调用/driver/misc下的makefile 时,将会把 lsm303d.o 加入到内核中。即可达到您的目的。

Linux/Android Kconfig Makefile defconfig 和 .config关系相关推荐

  1. 【转】Kconfig,Makefile 和 .config

    原文网址:http://blog.csdn.net/nxh_love/article/details/11846861 最新在做Sensor驱动移植的时候,发现了Android driver 中有Kc ...

  2. Linux内核defconfig在哪,Linux内核根目录中的配置文件.config中包含了许多宏定义,...

    满意答案 大大bigone 推荐于 2017.11.22 采纳率:52%    等级:9 已帮助:813人 一.Linux内核的配置系统由三个部分组成,分别是: 1.Makefile:分布在 Linu ...

  3. linux kernel defconfig和.config

    在Linux内核里,编译内核文件时,先要配置.config文件,然后Makefile在编译时通过读取.config文件的配置来选择要编译的文件,选择驱动的加载方式. xxx_defconfig 一般在 ...

  4. linux kernel: defconfig和.config

    在Linux内核里,编译内核文件时,先要配置.config文件,然后Makefile在编译时通过读取.config文件的配置来选择要编译的文件,选择驱动的加载方式. defconfig 一般在arch ...

  5. linux内核makefile详解,linux kernel编译Makefile和Kconfig,make menuconfig详解

    Sam需要看看2.6 kernel中USB Mouse的代码.顺便谈谈Kernel中Makefile和Kconfig文件的关系以及配合使用. 背景知识: 背景知识一:Kconfig介绍: 在#make ...

  6. linux内核kconfig objs,linux内核中Kconfig和Makefile 详解

    内核源码树的目录下都有两个文档 Kconfig (2.4版本是Config.in)和Makefile.分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录 ...

  7. Linux内核中Makefile、Kconfig、

    核心:学习过数据结构的童鞋应该知道,对于一棵非标准树,还是有办法将其进行遍历的,只是算法比较复杂而已.那么在Linux内核源码的这棵树,就是通过Kconfig文件建立各层子目录之间的连接,通过Make ...

  8. Linux Makefile自动生成--config.h

    2019独角兽企业重金招聘Python工程师标准>>> Linux Makefile自动生成--总体流程 Linux Makefile自动生成--实例 Linux Makefile自 ...

  9. Linux 内核顶层Makefile 详解

    目录 前602行分析 make xxx_defconfig 过程 Makefile.build 脚本分析 make 过程 built-in.o 文件编译生成过程 make zImage 过程 前几章我 ...

最新文章

  1. 18_python基础—面向对象-多态
  2. 【数据库】第二章 基础函数、聚合函数、条件查询、子查询和多表查询
  3. 对象入参指定泛型类型_如何得到正确的MethodInfo对象当一个类使用泛型和泛型类型参数...
  4. 简析GeoServer服务的内部文件组织以及GeoServer自动化服务发布工具的开发思路
  5. power bi 背景图_Power BI桌面脉冲图
  6. android get方法的使用方法,android之HttpPostHttpGet使用方法介绍
  7. 华硕笔记本返厂维修流程_Intel EVO严苛认证!14款极品笔记本上市:秒光|英特尔|笔记本|华硕|宏碁|惠普|微星...
  8. java课程设计实验报告_《java课程设计实验报告.doc
  9. 浏览器设置阻止第三方Cookie保护自己隐私
  10. matlab2016 wavread,DSP MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住 频率和 点数; 2 238万源代码下载- www.pudn.com...
  11. Java生成csv文件设置文本格式
  12. 市面上比较好用的钣金展开软件都有哪些?
  13. 爬虫chromedriver被识别怎么办?
  14. 一种Android应用耗电定位方案
  15. linux usb gadget驱动详解(一)
  16. VS Code无法更新,问题解决
  17. 聊天室-界面-curses
  18. 基金直销账户体系介绍
  19. 通过设置路由器DMZ主机ip,却还是没法通过外网访问
  20. 自己的JS框架--Amy框架。

热门文章

  1. java---编写一个方法,返回一个int型的二维数组,数组中的元素通过解析字符串参数获得。
  2. @ImportResource
  3. 011_Redis的快照持久化
  4. 007_停止动画或效果
  5. 043_对象构造器和原型
  6. 002_推箱子-关卡数据
  7. numpy pytorch 接口对应_用树莓派4b构建深度学习应用(四)PyTorch篇
  8. Java I/O中的对象序列化
  9. oracle 11查询sid,oracle 11g 更改sid和dbname
  10. python如何播放视频_如何用python做一个视频搜索+播放器