大家好,又见面了,我是你们的朋友全栈君。
在对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:
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138735.html原文链接:https://javaforall.cn