首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

内核编译

内核编译

编译选项文件Kconfig语法结构:
??config:主要指定目录项目(配置一个目录),并定义符号值. config 变量
??
??menuconfig:其定义的符号用于控制从属的config命令,其包含的config可以使用多个.
??
??choice和endchoice:它们中包含的多个config命令中只能选择一个时使用.
??
??comment:从菜单中输出支付串的功能. Comment”--------”
??
??menu和endmenu:表示子菜单,即把menu和endmenu命令之间的目录项分辨为下一层目录.
??menu”-----” -------------------------------------------------- endmenu
??注意:mainmenu只有一个,即最开始的声明为内核配置菜单.”Linux Kernel Configuration”,其不需要结束命令.
??
??if和endif:当为真时即执行条件语句块.
??
??Source:即包含其他内核编译选项文件,即执行其他目录中的编译选项文件.
??
??Config命令的选项:
??定义类型:即该选项赋予config指定的符号值相关特性,即输入变量类型.
??bool <输入字符串> 输入变量为布尔变量(yes 或no)
??tristate<输入字符串> 输入变量为一个3态变量(一般为编译状态build-in ,modules,no)
??string<输入字符串> 输入变量为一个字符串
??int<输入字符串> 输入变量为整数
??hex<输入字符串> 输入变量为16进制,即以0x开头
??
??prompt<输入字符串> if<表达式>
??为使menu中的config所指定的符号获取值,指定输出字符串
??
??default<表达式> if<表达式>
??用户没有选择时指定基本的命令,可以使用if语句指定多个基本值。
??
??依赖性
??depends on <表达式> if<表达式>
??requires<表达式> if<表达式>
??注意以下例子:
??bool “foo” if BAR
??defult y if BAR -------即if相当于依赖条件
??与下面例子意义相同
??depends on BAR bool “foo” defult y
??
??逆向依赖:
??select<符号> if<表达式>
??为其他符号再次赋予依赖性,表示强行指定为其他符号的依赖命令.
??
??range<范围> if<表达式>
??为符号设置范围
??
??help帮助文档
??最底层Kconfig存放在/arch/i386(或者是arm)/Kconfig. 以此为头,它会一层层使用source来把需要加入的各个目录中Kconfig添加近来。
??例如:source "drivers/Kconfig"则将~/drivers/Kconfig添加进Menu list中。
??
??关于2.6内核Makefile语法规则
??obj -y += 编辑到内核
??obj -m += 编译成模块
??obj -n += 或obj - +=不编译到内核
??
??ifeq~endif根据条件进行处理使用该函数.
??obj-$(符号)+=根据符号的配置值决定以何种方式编译文件
??subdir-$(符号)+=根据符号的配置值决定以何种方式编译子目录文件
??
??arch/xxx/kconfig文件是配置总菜单,使用menuconfig或xconfig命令后将生成.config,而arch/xxx/math-xxx/kconfig是用来设置开发板配置选项的;其余在各个子目录的kconfig用来添删子功能.
??为了缩短配置时间应该在arch/xxx/configs中选择一个和你cpu最相近的文件复制到根目录中的.congfig
??
??Linux内核的Makefile与我们平时写的Makefile有所不同,它由五部分组成:
??1.Makefile : 顶层Makefile。
??2. .config: kernel配置文件。
??3. arch/xxx/Makefile: 具体架构的Makefile。(即针对具体CPU来编译生成内核种类zImage Image等)
??4. scripts/Makefile.xxx : 通用规则。
??5. kbuild Makefile: 整个kernel中大约有数百个这种文件。
??内核编译过程如下:
??#make menuconfig后,生成 kernel配置文件: .config
??顶层Makefile读取.config.
??顶层Makefile通过解析 .config来决定递归访问哪些目录中的Kbuild Makefile .
??这个过程中,Kbuild Makefile会按.config的设置,逐个添加文件列表,以供最后的编译使用。
返回列表