menuconfig、kconfig、makefile)讲解

上传人:xzh****18 文档编号:46726517 上传时间:2018-06-27 格式:PDF 页数:5 大小:1.66MB
返回 下载 相关 举报
menuconfig、kconfig、makefile)讲解_第1页
第1页 / 共5页
menuconfig、kconfig、makefile)讲解_第2页
第2页 / 共5页
menuconfig、kconfig、makefile)讲解_第3页
第3页 / 共5页
menuconfig、kconfig、makefile)讲解_第4页
第4页 / 共5页
menuconfig、kconfig、makefile)讲解_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《menuconfig、kconfig、makefile)讲解》由会员分享,可在线阅读,更多相关《menuconfig、kconfig、makefile)讲解(5页珍藏版)》请在金锄头文库上搜索。

1、1/ 工作技巧这些年,我们读过的技术经典图书主题有奖征文 专访李铁军:从医生到金山首席安全专家的转变 独一无二的职位:开源社区经理Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解2011-10-29 16:29 2023人阅读 评论(0) 收藏 举报makefilelinuxlinux内核module图形工具前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍 了模块的一种编译方式在一个独立的文件夹通过makefile配合内核源码路径完成那么如何将驱动直接编译进内核呢?在我们实际内核的移植配置过程中经常听说的内核裁

2、剪又是怎么麽回事呢?我们在进行linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会出现以下界面:这个界面是怎么生成的呢?跟我们经常说的内核配置与与编译又有什么关系呢?下面我们借此来讲解一下linux内核的配置机制及其编译过程。一、配置系统的基本结构Linux内核的配置系统由三个部分组成,分别是:1、Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则;2、配置文件(config.in(2.4内核,2.6内核)):给用户提供配置选择的功能;3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置

3、用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig)。这些配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码)。本文原创:37篇转载:127篇译文:0篇评论:3条个人资料dianhuiren访问:71424次积分:1219分排名:第8764名文章搜索文章分类编程技巧 (10)工作技巧 (12)网络技术 (10)内核编程 (47)块设备体系 (7)调试技术 (3)系统启动 (4)Linux驱动 (1)杂

4、文 (2)音视频技术 (1)文章存档2013年02月 (1)2012年05月 (4)目录视图摘要视图订阅您还未登录!| 登录 | 注册 | 帮助首页业界移动云计算研发论坛博客下载process的专栏液压气动与液力工程手册 (上)京东价¥121.4更多2/ Makefile 和配置文件就可以。二、makefile menuconfig过程讲解当我们在执行make menuconfig这个命令时,系统到底帮我们做了哪些工作呢?这里面一共涉及到了一下几个文件我们来一一讲解Linux内核根目录下的scripts文件夹arch/$ARCH/Kconfig文件、各层目录下的Kconfig文件Linux内核

5、根目录下的makefile文件、各层目录下的makefile文件Linux内核根目录下的的.config文件、arm/$ARCH/下的config文件Linux内核根目录下的 include/generated/autoconf.h文件1)scripts文件夹存放的是跟make menuconfig配置界面的图形绘制相关的文件,我们作为使用者无需关心这个文件夹的内容2)当我们执行make menuconfig命令出现上述蓝色配置界面以前,系统帮我们做了以下工作:首先系统会读取arch/$ARCH/目录下的Kconfig文件生成整个配置界面选项(Kconfig是整个linux配置机制的核心),那

6、么ARCH环境变量的值等于多少呢?它是由linux内核根目录下的makefile文件决定的,在makefile下有此环境变量的定义:或者通过 make ARCH=arm menuconfig命令来生成配置界面,默认生成的界面是所有参数都是没有值的比如教务处进行考试,考试科数可能有外语、语文、数学等科,这里相当于我们选择了arm科可进行考试,系统就会读取arm/arm/kconfig文件生成配置选项(选择了arm科的卷子),系统还提供了x86科、milps科等10几门功课的考试题3)假设教务处比较“仁慈”,为了怕某些同学做不错试题,还给我们准备了一份参考答案(默认配置选项),存放在arch/$A

7、RCH/configs下,对于arm科来说就是arch/arm/configs文件夹:此文件夹中有许多选项,系统会读取哪个呢?内核默认会读取linux内核根目录下.config文件作为内核的默认选项(试题的参考答案),我们一般会根据开发板的类型从中选取一个与我们开发板最接近的系列到Linux内核根目录下(选择一个最接近的参考答案)#cp arch/arm/configs/s3c2410_defconfig .config4).config假设教务处留了一个心眼,他提供的参考答案并不完全正确(.config文件与我们的板子并不是完全匹配),这时我们可以选择直接修改.config文件然后执行mak

8、e menuconfig命令读取新的选项但是一般我们不采取这个方案,我们选择在配置界面中通过空格、esc、回车选择某些选项选中或者不选中,最后保存退出的时候,Linux内核会把新的选项(正确的参考答案)更新到.config中,此时我们可以把.config重命名为其它文件保存起来(当你执行make distclean时系统会把.config文件删除),以后我们再配置内核时就不需要再去arch/arm/configs下考取相应的文件了,省去了重新配置的麻烦,直接将保存的.config文件复制为.config即可.展开(2785)(2480)(2240)(2023)(1634)(1611)(1597

9、)(1478)(1459)(1354)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)2012年04月 (6)2012年03月 (15)2012年02月 (16)阅读排行lmbench的使用方法网卡参数说明sysfsLinux 内核配置机制(make menuconfig、Kconfig、makefile)讲解关于cache linePCI 总线初始化buildroot配置过程cache和内存的映射方式奥巴马的演讲工作队列使用方法评论排行lmbench的使用方法指针+1的含义Scsi命令队列转换为ata命令过程smartctl/hdparm对usb 硬盘识别的原因硬盘原理及常识li

10、bata分析块设备体系结构分析scsi总线的初始化NFS与RPCNFS及NAS工作原理推荐文章* Hbase安装与简介* 批评“我拒绝接受的几个最佳编 程实践方法”言论* 基于用户的deviantArt推荐系统 (SVD因子分解)* 使用VBA,20行代码 将Excel数据导出* 【Cocos2d-X开发】第17期:动作类之跟随动作、可调整速度动作以 及动作延时的使用* 3DShader之法线贴图(normalmapping)最新评论Scsi命令队列转换为ata命令过程 zeroily: 请问可以问您 如何让NCQ 和NONCQ指令并存呢?按照协议 如果存在NCQ指令,收到NONCQ 指令应该

11、.lmbench的使用方法 gml96: 写的很详细。值得称赞!指针+1的含义 arkzheng: int A=.;int (*p);p=cout / * m o d u l e _ i n i t ( ) * / 0 2 . # i n c l u d e / * p r i n t k ( ) * / 0 3 . # i n c l u d e / * _ _ i n i t _ _ e x i t * / 0 4 . 0 5 . # d e f i n e D E B U G / / o p e n d e b u g m e s s a g e 0 6 . 0 7 . # i f d

12、e f D E B U G 0 8 . # d e f i n e P R I N T K ( f m t , a r g . . . ) p r i n t k ( K E R N _ W A R N I N G f m t , # # a r g ) 0 9 . # e l s e 1 0 . # d e f i n e P R I N T K ( f m t , a r g . . . ) p r i n t k ( K E R N _ D E B U G f m t , # # a r g ) 1 1 . # e n d i f 1 2 . 1 3 . / * M o d u l e

13、I n i t 1 8 . r e t u r n 0 ; 4/ 9 . 2 0 . 2 1 . s t a t i c v o i d _ _ e x i t m y M o d u l e _ e x i t ( v o i d ) 2 2 . 2 3 . / * M o d u l e e x i t c o d e * / 2 4 . P R I N T K ( “ m y M o d u l e _ e x i t n “ ) ; 2 5 . r e t u r n ; 2 6 . 2 7 . 2 8 . m o d u l e _ i n i t ( m y M o d u l e

14、 _ i n i t ) ; 2 9 . m o d u l e _ e x i t ( m y M o d u l e _ e x i t ) ; 3 0 . 3 1 . M O D U L E _ A U T H O R ( “ d e n g w e i “ ) ; / * 模块作者,可选* / 3 2 . M O D U L E _ L I C E N S E ( “ G P L “ ) ; / * 模块许可证明,描述内核模块的许可权限,必须* / 3 3 . M O D U L E _ D E S C R I P T I O N ( “ A s i m p l e H e l l o

15、 W o r l d M o d u l e “ ) ; / * 模块说明,可选* / Step1:将modules.c拷到drivers/char/目录下(这个文件夹一般存放常见的字符驱动)Step2: vi driver/char/Kconfig,在config DEVKMEM后添加以下信息config MODULEStristate “modules device support“default yhelpSay Y here,the modules will be build in kernel.Say M here,the modules willbe build to modules

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号