linux 内核编译文档

长平狐 发布于 2012/09/03 12:45
阅读 248
收藏 1

一、makemenuconfig说明:

make menuconfig(或者其他的配置命令),命令执行完后产生文件.config(隐含的),其中保存着配置信息。下一次再做make menuconfig将产生新的.config文件,原.config被改名为.config.old。

 

二、make oldconfig优点:

  1. 迅速;
  2. 如果新内核选项没有出现在您的配置文件中,它会停下来并等候您输入您的选择。在内核升级设置过程中,“make oldconfig”命令十分有用。“make oldconfig”命令可以使内核设置进程读取用户已有的设置信息,从而会提示用户输入表示当前所有未定义内核设置变量的值。输入完毕后,“make oldconfig”命令会自动生成一个升级的内核设置文件。这时用户就可以着手建立新内核了。

 

三、 Linux的内核配置文件有两个:

一个是隐含的.config文件,嵌入到主Makefile中;另一个是include/linux/autoconf.h,嵌入到各个c源文件中,它们由make config、make menuconfig、make xconfig这些过程创建。几乎所有的源文件都会通过linux/config.h而嵌入autoconf.h,如果按照通常方法建立文件依赖关系(.depend),只要更新过autoconf.h,就会造成所有源代码的重新编绎。

 

四、内核编译的一般步骤:

#make dep
#make clean
#make zImage
#make bzImage
#make modules
#make modules_install
#depmod -a

第一个命令make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;

第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误

第三个命令make zImage和第四个命令make bzImage实现完全编译内核,二者生成的内核都是使用gzip压缩的,只要使用一个就够了,它们的区别在于使用make bzImage可以生成大一点的内核,比如在编译2.4.0版本的内核时如果使用make zImage命令,那么就会出现system too big的错误提示。建议大家使用make bzImage命令。
后面三个命令只有在你进行配置的过程中,在回答Enableloadable module support (CONFIG_MODULES)时选了"Yes"才是必要的,
make modules和makemodules_install分别生成相应的模块和把模块拷贝到需要的目录中。严格说来,第七个命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。

 

五、.config配置文件说明:

make menuconfig 的配置界面是与隐含的.config文件一一对应:

1、在make menuconfig配置界面code maturity lever optionsà里选择了

[*] promprt for development and/orincomplete code/drivers

[*] promprt for obsolete code/drivers

两项后.config文件也同步变化,下面的是.config文件的相应部分选项:

#

# Code maturity level options

#

CONFIG_EXPERIMENTAL=y

CONFIG_OBSOLETE=y

 

2、如果修改了.config文件的内容如下:

#

# Code maturity level options

#

CONFIG_EXPERIMENTAL is not set

CONFIG_OBSOLETE is not set

哪么在make menuconfig配置界面code maturity lever optionsà里的

[*] promprt for development and/or incompletecode/drivers

[*] promprt for obsolete code/drivers

两项也相应的同步变化,注意:CONFIG等的前面不要有空格符号。

 


原文链接:http://blog.csdn.net/hanchaoman/article/details/7278113
加载中
返回顶部
顶部