<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Jeri</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/25449/rss</id><updated>2010-02-24T08:31:26Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/25449/rss"/><entry><id>http://www.cnblogs.com/jackxia/archive/2010/02/24/1672787.html</id><title type="text">Kconfig文件的作用</title><summary type="text">内核源码树的目录下都有两个文件Kconfig（2.4版本是Config.in）和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库，每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时，从Kconfig中读出菜单，用户选择后保存到.config的内核配置文件中。在内核编译时，主Makefile调用...</summary><published>2010-02-24T08:31:00Z</published><updated>2010-02-24T08:31:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2010/02/24/1672787.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2010/02/24/1672787.html"/><content type="html">&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;内核源码树的目录下都有两个文件&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Kconfig&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;（&lt;/span&gt;&lt;span style="font-family: Arial"&gt;2.4&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;版本是&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Config.in&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;）和&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;。&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;分布到各目录的&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Kconfig&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;构成了一个分布式的内核配置数据库，每个&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Kconfig&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;分别描述了所属目录源文件相关的内核配置菜单。在内核配置&lt;/span&gt;&lt;span style="font-family: Arial"&gt;make menuconfig(&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;或&lt;/span&gt;&lt;span style="font-family: Arial"&gt;xconfig&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;等&lt;/span&gt;&lt;span style="font-family: Arial"&gt;)&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;时，从&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Kconfig&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;中读出菜单，用户选择后保存到&lt;/span&gt;&lt;span style="font-family: Arial"&gt;.config&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;的内核配置文件中。在内核编译时，主&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;调用这个&lt;/span&gt;&lt;span style="font-family: Arial"&gt;.config&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;，就知道了用户的选择。&lt;/span&gt;&lt;span style="font-family: Arial"&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;*&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;上面的内容说明了，&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Kconfig&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;就是对应着内核的配置菜单。如果要想添加新的驱动到内核的源码中，可以修改&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Kconfig,&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;这样就可以选择这个驱动，如果想使这个驱动被编译，要修改&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;strong&gt;&lt;span style="font-family: Arial"&gt;so&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: PMingLiU"&gt;添加新的驱动时需要修改的文件有两种（注意不只是两个）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;strong&gt;&lt;span style="font-family: Arial"&gt;*Kconfig&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;strong&gt;&lt;span style="font-family: Arial"&gt;*Makefile&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;要想知道怎么修改这两种文件，就要知道两种文件的语法结构&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;strong&gt;&lt;span style="font-family: Arial"&gt;Kconfig&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;每个菜单都有一个关键字标识，最常见的就是&lt;/span&gt;&lt;span style="font-family: Arial"&gt;config&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;语法：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;config &amp;lt;symbol&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;&amp;lt;config options&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;symbol&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;是一个新的标记的菜单项，&lt;/span&gt;&lt;span style="font-family: Arial"&gt;options&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;是在这个新的菜单项下的属性和选项&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;其中&lt;/span&gt;&lt;span style="font-family: Arial"&gt;options&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;部分有：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;1&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;、类型定义：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;每个&lt;/span&gt;&lt;span style="font-family: Arial"&gt;config&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;菜单项都要有类型定义，&lt;/span&gt;&lt;span style="font-family: Arial"&gt;bool&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;布尔类型、&lt;/span&gt;&lt;span style="font-family: Arial"&gt; tristate&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;三态：内建、模块、移除&lt;/span&gt;&lt;span style="font-family: Arial"&gt; string&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;字符串、&lt;/span&gt;&lt;span style="font-family: Arial"&gt; hex&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;十六进制、&lt;/span&gt;&lt;span style="font-family: Arial"&gt; integer&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;整型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;例如&lt;/span&gt;&lt;span style="font-family: Arial"&gt;config HELLO_MODULE&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;bool "hello test module"&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;bool&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;类型的只能选中或不选中，&lt;/span&gt;&lt;span style="font-family: Arial"&gt;tristate&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;类型的菜单项多了编译成内核模块的选项，如果选择编译成内核模块，则会在&lt;/span&gt;&lt;span style="font-family: Arial"&gt;.config&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;中生成一个&lt;/span&gt;&lt;span style="font-family: Arial"&gt;CONFIG_HELLO_MODULE=m&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;的配置，如果选择内建，就是直接编译成内核影响，就会在&lt;/span&gt;&lt;span style="font-family: Arial"&gt;.config&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;中生成一个&lt;/span&gt;&lt;span style="font-family: Arial"&gt;CONFIG_HELLO_MODULE=y&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;的配置&lt;/span&gt;&lt;span style="font-family: Arial"&gt;.&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;2&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;、依赖型定义&lt;/span&gt;&lt;span style="font-family: Arial"&gt;depends on&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;或&lt;/span&gt;&lt;span style="font-family: Arial"&gt;requires&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;指此菜单的出现与否依赖于另一个定义&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;config HELLO_MODULE&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;bool "hello test module"&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;depends on ARCH_PXA&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;这个例子表明&lt;/span&gt;&lt;span style="font-family: Arial"&gt;HELLO_MODULE&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;这个菜单项只对&lt;/span&gt;&lt;span style="font-family: Arial"&gt;XScale&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;处理器有效。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;3&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;、帮助性定义&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;只是增加帮助用关键字&lt;/span&gt;&lt;span style="font-family: Arial"&gt;help&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;或者&lt;/span&gt;&lt;span style="font-family: Arial"&gt;---help---&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;strong&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: PMingLiU"&gt;内核的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;在&lt;/span&gt;&lt;span style="font-family: Arial"&gt;linux2.6.x/Documentation/kbuild&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;目录下有详细的介绍有关&lt;/span&gt;&lt;span style="font-family: Arial"&gt;kernel makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;的知识。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;内核的&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;分为&lt;/span&gt;&lt;span style="font-family: Arial"&gt;5&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;个组成部分：&lt;/span&gt;&lt;span style="font-family: Arial"&gt; &lt;br /&gt;&lt;br /&gt;Makefile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;最顶层的&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&amp;nbsp;&lt;br /&gt;.config&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;内核的当前配置文件，编译时成为定层&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;的一部分&lt;/span&gt;&lt;span style="font-family: Arial"&gt;&lt;br /&gt;arch/$(ARCH)/Makefile&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;与体系结构相关的&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile &lt;br /&gt;s/ Makefile.*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;一些&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;的通用规则&lt;/span&gt;&lt;span style="font-family: Arial"&gt; &lt;br /&gt;kbuild Makefile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;各级目录下的大概约&lt;/span&gt;&lt;span style="font-family: Arial"&gt;500&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;个文件，编译时根据上层&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;传下来的宏定义和其他编译规则，将源代码编译成模块或者编入内核&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;顶层的&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;文件读取&lt;/span&gt;&lt;span style="font-family: Arial"&gt; .config&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;文件的内容，并总体上负责&lt;/span&gt;&lt;span style="font-family: Arial"&gt;build&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;内核和模块。&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Arch Makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;则提供补充体系结构相关的信息。&lt;/span&gt;&lt;span style="font-family: Arial"&gt; s&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;目录下的&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Makefile&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;文件包含了所有用来根据&lt;/span&gt;&lt;span style="font-family: Arial"&gt;kbuild Makefile &lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;构建内核所需的定义和规则。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: PMingLiU"&gt;（其中&lt;/span&gt;&lt;span style="font-family: Arial"&gt;.config&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;的内容是在&lt;/span&gt;&lt;span style="font-family: Arial"&gt;make menuconfig&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;的时候，通过&lt;/span&gt;&lt;span style="font-family: Arial"&gt;Kconfig&lt;/span&gt;&lt;span style="font-family: PMingLiU"&gt;文件配置的结果&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: 宋体"&gt;举个例子：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;假设想把自己写的一个&lt;/span&gt;&lt;span style="font-family: Arial"&gt;flash&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;的驱动程序加载到工程中，而且能够通过&lt;/span&gt;&lt;span style="font-family: Arial"&gt;menuconfig&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;配置内核时选择该驱动该怎么办呢？可以分三步：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;第一：将你写的&lt;/span&gt;&lt;span style="font-family: Arial"&gt;flashtest.c &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;文件添加到&lt;/span&gt;&lt;span style="font-family: Arial"&gt;/driver/mtd/maps/ &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;目录下。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;第二：修改&lt;/span&gt;&lt;span style="font-family: Arial"&gt;/driver/mtd/maps&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;目录下的&lt;/span&gt;&lt;span style="font-family: Arial"&gt;kconfig&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;文件：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&lt;em&gt;config MTD_flashtest&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;tristate &amp;#8220;ap71 flash"&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;这样当&lt;/span&gt;&lt;span style="font-family: Arial"&gt;make menuconfig&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;时&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;，将会出现&lt;/span&gt;&lt;span style="font-family: Arial"&gt; ap71 flash&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;选项。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="word-break: break-all"&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;第三：修改该目录下&lt;/span&gt;&lt;span style="font-family: Arial"&gt;makefile&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;文件。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: -18pt; margin: 0cm 0cm 0pt 36pt; word-break: break-all"&gt;&lt;span style="font-family: Wingdings"&gt;&amp;#252;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;添加如下内容：&lt;/span&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family: Arial"&gt;obj-$(CONFIG_MTD_flashtest)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; += flashtest.o&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;这样，当你运行&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;make menucofnig&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;时，你将发现&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;ap71 flash&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;选项，如果你选择了此项。该选择就会保存在&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;.config&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;文件中。当你编译内核时，将会读取&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;.config&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;文件，当发现&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;ap71 flash &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;选项为&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;yes &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;时，系统在调用&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;/driver/mtd/maps/&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;下的&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;makefile &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;时，将会把&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt; flashtest.o &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt"&gt;加入到内核中。即可达到你的目的&lt;/span&gt;。&lt;img src="http://www.cnblogs.com/jackxia/aggbug/1672787.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jackxia/archive/2010/02/24/1672787.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jackxia/archive/2010/02/02/1661713.html</id><title type="text">转载goahead webserver源码分析</title><summary type="text">1.一个txt文本架构图main() | |--websOpenServer() | |-- websOpenListen() | |--socketOpenConnection() | |--打开webServer服务器 | |--初化socket_t结构(注册websAccept()回调函数(socket_t sp-&amp;gt;accept= websAccept)等) | |--把socket_...</summary><published>2010-02-02T05:07:00Z</published><updated>2010-02-02T05:07:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2010/02/02/1661713.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2010/02/02/1661713.html"/></entry><entry><id>http://www.cnblogs.com/jackxia/archive/2010/01/20/1652169.html</id><title type="text">Vista中使用netsh wlan命令行配置无线网络</title><summary type="text">在Windows Vista中，我们可以使用图形界面设置定无线网络连接。然而，如何使用CLI命令行工具实现这一功能呢?本文将该命令的详细用法。 　　一、为什么要用命令行来配置无线网络?　　既然有了GUI界面可以设置，为什么还需要用命令行工具来设置呢?有以下几个理由：　　 &amp;#9312;当GUI界面不可用时，可以使用CLI界面&amp;#8212;&amp;#8212;或许因为某种原因，造成GUI界面不可用，这时我...</summary><published>2010-01-20T02:52:00Z</published><updated>2010-01-20T02:52:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2010/01/20/1652169.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2010/01/20/1652169.html"/></entry><entry><id>http://www.cnblogs.com/jackxia/archive/2010/01/15/1648251.html</id><title type="text">Linux操作系统下VI编辑器常用命令介绍</title><summary type="text">一．简介 　　vi是unix世界中最通用的全屏编辑器，linux中是用的是vi的加强版vim,vim同vi完全兼容，vi就是"visual interface"的缩写。它可以执行输出、删除、查找、替换、块操作等众多文本操作，而且用户可以根据自己的需要对其进行定制，这是其它编辑程序所没有的。 　　vi不是一个排版程序，它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排，它只是一个文本...</summary><published>2010-01-15T00:52:00Z</published><updated>2010-01-15T00:52:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2010/01/15/1648251.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2010/01/15/1648251.html"/></entry><entry><id>http://www.cnblogs.com/jackxia/archive/2009/07/18/1526092.html</id><title type="text">.net防注入铁盾--亲手教你ASP.NET中如何防止注入攻击</title><summary type="text">你应该在程序中验证所有的不信任输入.你应该假定所有的用户输入都是非法的.用户可以在应用程序中提供表单字段,查询字串,客户端cookies和浏览器环境值比如用户代理字串和IP地址等. 　　弱输入校验通常为注入攻击提供了机会.下面是常见的利用弱输入校验或无输入校验进行攻击的手段. SQL 注入(SQL injection). 如果你使用用户的输入值来动态构造SQL语句,那么数据库可能执行攻击性的有害S...</summary><published>2009-07-18T03:32:00Z</published><updated>2009-07-18T03:32:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2009/07/18/1526092.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2009/07/18/1526092.html"/></entry><entry><id>http://www.cnblogs.com/jackxia/archive/2009/05/25/1488626.html</id><title type="text">vs2005项模板和项目模板丢失的解决办法（转）</title><summary type="text">文章来源：http://www.cnblogs.com/Randy0528/前段时间为了学习体验分布式三层架构，只得把中文版的ｖｓ２００５换成英文版的ｖｓ２００５，因为前者只能新建WebSite而不能新建Web Application,另外又安装一个Web Application Plug-in和中文的MSDN，由此折腾了好一阵子！　　　开发OnLineExam的过程中，却发现找不到项目模板和项模...</summary><published>2009-05-25T01:06:00Z</published><updated>2009-05-25T01:06:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2009/05/25/1488626.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2009/05/25/1488626.html"/></entry><entry><id>http://www.cnblogs.com/jackxia/archive/2009/05/19/1459958.html</id><title type="text">Asp.net(c#)导出有表格线的Excel</title><summary type="text">表格用文件流的方式输出为excel。实例代码如下：[代码]这种方法的从本质上说并非标准的excel格式，不过把html格式的文件另存为excel的格式，然后用excel打开罢了。打开后会发现导出的excel无表格线，白白的一片，太难看了。通过分析excel的格式代码，我尝试在程序里增加带表格线的excel头部代码，结果顺利导出有表格线的excel.增加的代码如下：[代码][代码]</summary><published>2009-05-19T02:04:00Z</published><updated>2009-05-19T02:04:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2009/05/19/1459958.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2009/05/19/1459958.html"/></entry><entry><id>http://www.cnblogs.com/jackxia/archive/2009/03/11/1409057.html</id><title type="text">对.NET的GC（垃圾回收）的理解都存在错误认识</title><summary type="text">对.NET的GC（垃圾回收）的理解都存在错误。GC其实是相当复杂的系统，虽然95%的情况下我们并不需要考虑它，但仍有5%的情况我们不得不接触GC体系来解决问题。比如这个问题：void Func(){ A a = new A(); B b = new B(); a.RefToB = b; b.RefToA = a;}那么a和b会不会被GC回收？好几个人都答错。如果你按照COM的模式去思考GC，那就完...</summary><published>2009-03-11T12:24:00Z</published><updated>2009-03-11T12:24:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2009/03/11/1409057.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2009/03/11/1409057.html"/></entry><entry><id>http://www.cnblogs.com/jackxia/archive/2009/02/18/1392982.html</id><title type="text">MSSQL如何快速清除数据库日志</title><summary type="text">先提供一种复杂的方法压缩日志及数据库文件如下：1.清空日志　 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志：　 BACKUP LOG 数据库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小　 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件　 --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允...</summary><published>2009-02-18T03:09:00Z</published><updated>2009-02-18T03:09:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2009/02/18/1392982.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2009/02/18/1392982.html"/></entry><entry><id>http://www.cnblogs.com/jackxia/archive/2008/08/13/1267228.html</id><title type="text">数据库查询优化原则(转）</title><summary type="text">1.对查询进行优化，应尽量避免全表扫描，首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断，否则将导致引擎放弃使用索引而进行全表扫描，如： select id from t where num is null 可以在num上设置默认值0，确保表中num列没有null值，然后这样查询： select id from ...</summary><published>2008-08-13T11:08:00Z</published><updated>2008-08-13T11:08:00Z</updated><author><name>Jeri</name><uri>http://www.cnblogs.com/jackxia/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jackxia/archive/2008/08/13/1267228.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jackxia/archive/2008/08/13/1267228.html"/></entry></feed>
