文章目录
  1. 1. Menuconfig的配置.
    1. 1.1. 操作说明
  2. 2. Kconfig
    1. 2.1. 基本配置语句
    2. 2.2. .config

command_conquer_red_alert_2_conceptart_XPGXE

Menuconfig的配置.

Linux编译器通过.config文件确认哪些代码编译进内核,哪些被裁剪掉

menuconfig是生成.config的一个工具

在Linux发展过程中,配置内核可以使用一下命令:
– #make config(基于文本的最为传统的配置界面,不推荐使用)
– #make menuconfig(基于文本菜单的配置界面)

在运行make menuconfig的时候它首先运行的是scripts/kconfig/mconf Kconfig

menuconfig实现的代码在源码scripts目录下
– #make xconfig(要求QT被安装)
– #make gconfig(要求GTK+被安装)


操作说明

  1. 输入**/**搜搜相关字符

    =n表示没有编译进去,对应菜单里的状态
    y 模块驱动编译到内核中,启动时自动加载
    m:模块会被编译,但是不会被编译到内核中,只是生成.o文件

  2. 使用空格键选择具体编译配置,有3种状态

  • M   编译成模块

    需要在编译文件特殊定义

  •   不编译状态

  • \*   编译进内核。


Kconfig

执行#make menuconfig时会出现内核的配置界面,所有配置工具都是通过读取”arch/$(ARCH)Kconfig”文件来生成配置界面,这个文件就是所有配置的总入口,它会包含其他目录的Kconfig

常用的配置基本在drivers目录下

基本配置语句

• menu “Device Drivers”菜单类
– source “xxx”
• menu “Character devices”
– source “xxx”
• 最终选项
– Enable LEDS config

常用配置基本在drivers目录下

例如:源码中leds的Kconfig

driver目录下的ldeds的Kconfig分析

1. 源码中drivers/Kconfig 定义了menucofnig的menu标题 “Device Drivers”,同时定义了下一级的Kconfig

1
source "drivers/leds/Kconfig"

2. 源码中drivers/char/Kconfig 文件中定义了menuconfig的menu标题”Charter devices”,同时定义了leds的选项卡Enable LEDS config

1
2
3
4
5
config LEDS_CTL
bool "Enable LEDS config"
default y
help
Enable LEDS config

也就是说通过在源码中执行make menuconfig菜单:Device Drivers——>Charter devices——>Enable LEDS config
在源码文件中则是drivers/Kconfig ——>drivers/char/Kconfig

.config

.config是通过menuconfig配置之后生成的, linux在编译的时候根据.config里的宏定义来确定哪些文件编译到内核.

如果menucofing中某一模块选择”空白”即不编译状态,**.config**的宏定义则会被注释

注意源码中其它.config 是针对不同的操作系统功能裁剪的.config
源码中.config

实例添加一个HELLO_CTL

1
root@ubuntu:~/iTop4412_Kernel_3.0# vi drivers/char/Kconfig 

添加

1
2
3
4
5
config HELLO_CTL
tristate "Enable HELLO config" # tristate是三态的状态:第三中状态是编译成模块的状态
default y
help
Enable HELLO config

这样在menuconfig中就会有

同时在源码根目录的**.config**文件中也会产生

1
CONFIG_HELLO_CTL=y
文章目录
  1. 1. Menuconfig的配置.
    1. 1.1. 操作说明
  2. 2. Kconfig
    1. 2.1. 基本配置语句
    2. 2.2. .config