Linux Kbuild文档 1

Linux内核配置方式1.1 概述

Linux内核源代码组织了一个配置系统,该配置系统可以生成内核配置菜单,方便内核配置。配置系统主要包含Makefile、Kconfig和配置工具,可以生成配置界面。其中,配置界面是通过配置工具来生成的,配置工具通过Makefile编译执行,配置界面中的选项则是通过各级的Kconfig(老版本也称Config.in)和Makefile(老版本也称Kbuild)文件定义。

Linux内核配置系统也被移植到其它软件(如Busybox、glibc、uclibc等)中,来提供同样的配置界面以方便有选择性的配置。

1.2 内核配置工具

Linux内核配置命令主要有:make config、make menuconfig、make xconfig和make gconfig,分别是字符界面、ncurses光标菜单、QT图形窗口和GTK图形窗口的配置界面。字符界面配置方式需要回答每一个选项提示,逐个回答进行配置并不方便,而光标和图形配置界面界面友好,方便实用。

make config是完全命令行的配置方式,make menuconfig依赖于ncurses库,make xconfig依赖于QT图形库,make gconfig依赖于GTK图形库。

不同的内核配置方式,分别通过不同的配置工具来完成。scripts目录下提供了各种内核配置工具,表1是这些工具的说明。

表1 内核配置工具说明

配置工具

Makefile相关目标

依赖的程序

conf

config defconfig oldconfig …

conf.c、zconf.tab.c

mconf

menuconfig

mconf.c、zconf.tab.c

qconf

xconfig

qconf.c、kconfig_load.c、zconf.tab.c

gconf

gconfig

gconf.c、kconfig_load.c、zconf.tab.c

其中zconf.tab.c程序实现了解析Kconfig文件和内核配置主要函数。Zconf.tab.c程序还直接包括了下列一些C程序,这样各种配置功能都包含在zconf.tab.o目标文件中了。

其中,lex.zconf.c实现lex语法解析器,

util.c实现配置工具,

confdata.c实现.config等相关数据文件保存,

expr.c实现表达式函数,

symbol.c实现变量处理函数,

menu.c实现菜单控制函数。

1.3 内核配置方式

在顶层的Makefile中,可以查找到如下几行定义的规则:

这就是生成内核配置界面的命令规则,它也定义了执行的目标和依赖的前提条件,还有要执行的命令。这条规则定义的目标为config %config,通配符%意味着可以包括config、menuconfig、xconfig、gconfig等。依赖的前提条件是scripts_basic outputmakefile,这些在Makefile中也是规则定义,主要用来编译生成配置工具。这条规则执行的命令就是执行scripts/kconfig/Makefile制定的规则。

根据配置工具的不同,内核有不同的配置方式。有命令行方式,还有图形界面方式。表2是各种内核配置方法的说明。

表2 内核配置方法的说明

配置方法

功能

config

通过命令行程序更新当前配置

menuconfig

通过菜单程序更新当前配置

xconfig

通过QT图形界面更新当前配置

gconfig

通过GTK图形界面更新当前配置

oldconfig

通过已经提供的.config文件更新当前配置

Randconfig

对所有的选项随机配置

Defconfig

对所有的选项缺省配置

allmodconfig

对所有的选项尽可能选择“m”

allyesconfig

对所有的选项尽可能选择“y”

allnoconfig

对所有的选项尽可能选择“n”的最小配置


这些内核配置方式是在scripts/kconfig/Makefile中通过规则定义的。从这个Makefile中,可以找到下面一些规则定义。如果把变量或者通配符带进去,就可以明白要执行的操作。

这里的ARCH以arm为例来说明。

执行命令:scripts/kconfig/qconf arch/arm/Kconfig,使用QT图形库生成配置界面,arch/arm/Kconfig是菜单的主配置文件,每种配置方式都需要。

执行命令:scripts/kconfig/qconf arch/arm/Kconfig,使用GTK图形库生成配置界面。

执行命令:scripts/kconfig/mconf arch/arm/Kconfig,使用lxdialog工具,生成光标配置菜单。

执行命令:scripts/kconfig/conf (-o/s) arch/arm/Kconfig,完全命令行的内核配置方式。使用“-o”选项,直接读取已经存在的.config文件,要求确定内核新的配置项。使用“-s”选项,直接读取已经存在的.config文件,提示但不要求确认内核新的配置项。

通过上述各种方式都可以完成配置内核的工作,在顶层目录下生成.config文件。这个.config文件保存大量的内核配置项,.config会自动转换成include/linux/autoconf.h头文件。在include/linux/config.h文件中,将包含使用include/linux/autoconf.h头文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

依赖注入原理 php,PHP依赖注入原理与用法分析

本文实例讲述了PHP依赖注入原理与用法。分享给大家供大家参考,具体如下:引言依然是来自到喜啦的一道面试题,你知道什么是依赖注入吗?依赖注入(DI)的概念虽然听起来很深奥,但是如果你用过一些新兴的php框架的话&#xf…

jQuery1.7.2正式发布了

下载地址 jQuery1.7.2正式发布了,下载地址: http://code.jquery.com/jquery-1.7.2.min.js (minified, production)http://code.jquery.com/jquery-1.7.2.js (unminified, debug)注:如果你正在使用jQuery Mobile,请使用最新的jQuer…

Linux Kbuild文档 2

2. Kconfig linux在2.6版本以后将配置文件由原来的config.in改为Kconfig,对于Kconfig的语法在内核源代码/Documentation/kbuild/kconfig-language.txt中做了详细的说明。 2.1 Kconfig的树状关系 Kconfig的配置选项是以树的形式组织的,如下所示所示&am…

php upw5.5,UPW

PHP EngineerResponsibilities:●Analysis and module design of software system;●Development and design of new products, and be able to write the core module code independently;●Responsible for the maintenance and upgrading of existing…

cocos2d对动画的各种操作

关于动画的各种操作,总结一下以便以后复习查找。 内容简要: 1、瞬时动作2、延时动作 3、 组合动作 4、动画 5、速度变化6、函数调用7、创建动作动画8、控制动画帧的速度 原文地址: http://blog.csdn.net/dingkun520wy/article/details/7014233 --…

matlab的灰色关联,五种灰色关联度分析matlab代码

《五种灰色关联度分析matlab代码》由会员分享,可在线阅读,更多相关《五种灰色关联度分析matlab代码(3页珍藏版)》请在人人文库网上搜索。1、灰色邓关联分析% p12-the study on the grey relational degree and its applicationFunction R1gld_deng(x)ssi…

Linux Kbuild文档 3

3. Kbuild Makefile Linux内核源代码是通过Makefile组织编译的,Linux2.6内核Makefile的许多特性和2.4内核差别很大,在内核目录的documention/kbuild/makefiles.txt中有详细的说明。 3.1 Makefile的组织结构 Linux内核的Makefile分为5个部分&#xff0…

SQL求解两个时间差

sql 求解两个时间差SELECTDATEDIFF( Second, 2009-8-25 12:15:12, 2009-9-1 7:18:20) --返回相差秒数SELECTDATEDIFF( Minute, 2009-9-1 6:15:12, 2009-9-1 7:18:20) --返回相差分钟数 SELECTDATEDIFF( Day, 2009-8-25 12:15:12,2009-9-1 7:18:20)--返回相差的天数SELEC…

matlab如何画一个平面,matlab 画平面

.framework使用注意、静态库配置及构架合成使用注意: 1.项目中使用的framework中包含了资源文件时,需要手动添加该framework中的资源文件 2.由于动态库(framework默认生成为动态库)不能上架,我们在生成的时候需要修改为 ...spring加载hibernate映射文件的几种方式 &…

Linux Kbuild文档 4

4. 一个使用linux kbuild实现可配置编译的例子 我编写了一个使用Linux kbuild机制实现可配置编译的小例子,工程名为print-example。包括如下如下几个目录: 其中scripts、Makefile、Makefile.flags是从busybox-1.9.0复制过来的。 4.1 运行print 运行m…

php标准输出重定向,python标准输出重定向方式

一. 背景在Python中,文件对象sys.stdin、sys.stdout和sys.stderr分别对应解释器的标准输入、标准输出和标准出错流。在程序启动时,这些对象的初值由sys.__stdin__、sys.__stdout__和sys.__stderr__保存,以便用于收尾(finalization)时恢复标准…

C# 温故而知新:Stream篇(六)

C# 温故而知新:Stream篇(六) BufferedStream 目录: 简单介绍一下BufferedStream如何理解缓冲区?BufferedStream的优势从BufferedStream 中学习装饰模式    如何理解装饰模式    再次理解下装饰模式在Stream中的…

Linux内核的Makefile和kconfig解读

一、概述 在内核编译中如何将各个目录树中的文件组织起来编译是一个很重要的问题,并且要根据用户配置来编译特有的内核。为了解决这个问题,内核使用两种文件,Makefie和Kconfig。分布到各目录的Kconfig构成了一个分布式的内核配置数据库&#…

网页快照

C#生成网站网页快照&#xff0c;Html转成图片2012-04-09 22:29HtmlToImg.cs using System; using System.Drawing; using System.Threading; using System.Windows.Forms; /// <summary> /// 生成网页快照 /// </summary> publicclassHtmlToImg { Bitmap m_Bitmap;…

php获取网页输出,PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)_PHP教程

看点&#xff1a;1、file_get_contents超时控制。2、页面编码判断。3、键盘Enter键捕捉响应。4、键盘event兼容处理。//event event || window.event;5、XMLHttpRequest 和 jQuery 两种实现方案。6、页面及源码同时展示。XMLHttpRequest版本 get_web.php复制代码 代码如下:hea…

HDU 3306 Another kind of Fibonacci

题意&#xff1a;A(0) 1 , A(1) 1 , A(N) X * A(N - 1) Y * A(N - 2) (N > 2)&#xff1b;给定三个值N&#xff0c;X&#xff0c;Y求S(N):S(N) A(0)2 A(1)2……A(n)2。 思路&#xff1a;原来我们讲的斐波那契数列是&#xff1a; F(0) 1, F(1) 1, F(N) F(N - 1) F(N…

php中拼接html代码,如何利用ajax给html动态拼接代码

function get_all_category_with_id() {$.ajax( {type: "get", url: "../../../appUpload/getAllCategoryByid", async : false, dataType: "text", success: function (data) {var obj JSON.parse(data);var str "";//先将元素对应清…

Arm Linux交叉编译和连接过程分析(1)

一、配置内核&#xff08;Kconfig&#xff09; 我们配置内核是实质是根据众多目录下面的Kconfig文件中组合成我们需要的一个最佳选择&#xff0c;即最终在根目录下面生成的.config文件&#xff0c;而这个文件会在根目录Makefile下调用的。这一部分我们主要讨论整个SEP4020体系…

struts2标签_select获取action传过来的值

<s:select list"#session.userlist" //从Action传过来的键(属性)的名称headerKey"请选择" //默认选中项的值headerValue"请选择" //默认选中项显示的信息listKey"project_id" …

3500 yuan to php,350 CNY to PHP Currency Converter - 人民币 菲律宾比索 汇率兑换

Exchange350 CNY2612.29 PHPExchange 350 人民币2612.29 菲律宾比索Exchange1750 CNY13061.46 PHPExchange 1750 人民币13061.46 菲律宾比索Exchange3500 CNY26122.92 PHPExchange 3500 人民币26122.92 菲律宾比索Exchange17500 CNY130614.62 PHPExchange 17500 人民币130614.6…