linux系统menuconfig解析

在对linux进行编译,常用的命令是make menuconfig,使用图形界面来对整个系统进行裁剪;这里主要就make menuconfig的执行过程进行解析。

介绍

         跟make menuconfig这个命令相关的文件,包括三类,包括.config,Kconfig,Makefile。为什么不说三个,而说三类呢?因为Kconfig和Makefile是配合使用的,在很多的子目录都存在,而.config只存在于根目录中。这三个文件的作用分别是:

Kconfig:定义了配置项

.config:对配置项进行赋值

Makefile:建立配置项的生成法则

三者的关系为:make menuconfig依赖于Kconfig进行系统可视化配置,Kconfig为可视化配置菜单;在可视化配置界面修改完相应配置之后,生成的配置项保存在.config文件里,即对不同的配置项定义的赋值;在系统中运行make的时候,Makefile会依赖于.config里的配置项的值对Makefile里相应的选项进行编译。

菜单选项

Kconfig里的菜单选项的添加通过menu和endmenu关键字来添加,主菜单名称通过mainmenu来命名;

mainmenu "Linux Configuration"

menu "Power Management"
source pm/Kconfig
endmenu

如果有多级菜单的话,可以通过多级嵌套来实现,这里类似于if和fi关键字;如果当前menu下包含有其他路径下的Kconfig文件,则用source + 文件路径来调用该Kconfig文件;

变量配置

字符型变量,用关键字string;如果需要限制条件的话,通过if+限制条件来实现;


config FRAMEWORK_DIR
    string "FRAMEWORK directory"
    default "../framework" if !WINDOWS_NATIVE
    default "..\framework" if WINDOWS_NATIVE

bool和int型变量,分别通过关键字bool或者int来实现,对于bool类型变量,default值为n或者y,n表示no,y表示yes;

config DEFAULT_SMALL
    bool "Default to smallest size"
    default n

多选一窗口,通过choice和endchoice关键字实现;使用choice关键字的时候,需要定义prompt 和default 两个变量的值,前者为提示标签,后者为该多选一变量默认的初始值;

choice
    prompt "Build Host Platform"
    default HOST_LINUX

config HOST_LINUX
    bool "Linux"

config HOST_OSX
    bool "OSX"

config HOST_WINDOWS
    bool "Windows"

config HOST_OTHER
    bool "Other"

endchoice

如果有依赖条件的话,通过关键字depends on实现,并列条件通过&&实现;

config BUILD_KERNEL
    bool "TinyAra kernel build"
    depends on ARCH_USE_MMU && ARCH_ADDRENV && EXPERIMENTAL
    select LIB_SYSCALL

help窗口,如果该条选项需要help窗口,则通过---help---关键字实现;

---help---
        Identifies the directory that builds the
        application to link with TinyAra.  Default: ../apps This symbol must be assigned
        to the path to the application build directory *relative* to
        the TinyAra top build directory. If you had an application
        directory and the TinyAra directory each in separate directory
        trees like this:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容