现在的位置: 首页 > 综合 > 正文

linux kernel kbuild详解

2018年05月08日 ⁄ 综合 ⁄ 共 2122字 ⁄ 字号 评论关闭

modules.order:这个文件记录了Makefile中模块出现的顺序。modprobe通过它来确定解决多个模块匹配的别名(指定模块的绝对路径)。

如:kernel//home/cjz/Desktop/test/driver/input/vms.ko

 

modules.builtin:这个文件列出了所有编译到内核的模块,通过这个当modprobe加载一些内核模块时就不会失败。

modules.dep:modules.dep文件来查找各个驱动模块之间的依赖关系,在modprobe是使用                              

环境变量

KCPPFLAGS:预处理传递的附加选项,预处理选项用在kbuild预处理包含编译C文件和汇编文件。

KAFLAGS:汇编(内核和模块)的附加选项

AFLAGS_MODULE:$(AS)的附加模块指定选项

AFLAGS_KERNEL:$(AS)用汇编代码编译为内建的附加选项

KCFLAGS:C编译的附加选项

CFLAGS_KERNEL:$(CC)编译为内部的选项

CFLAGS_MODULE:$(CC)的附加指定选项

LDFLAGS_MODULE:$(LD)链接时的附加选项

KBUILD_VERBOSE:

KBUILD_EXTMOD:当编译外部模块时设置内核源码查找路径,目录可以用以下几种方式指定

                                     1、在命令行用M=...

                                     2、环境变量KBUILD_EXTMOD

                                     3、环境变量SUBDIRS

                                      用M=。。。会覆盖其它两种情况

KBUILD_OUTPUT:编译内核时描写输出目录。输出目录也可以通过 O=... 来指定, O=。。。优先级要高于KBUILD_OUTPUT

KBUILD_DEBARCH:编译Debian 体系的

ARCH:设置要被编译的体系结构,大多数情况体系结构的名称和arch/下的名称是一样的,但是也有例外,如X86和sparc有别名x86: i386 for 32 bit, x86_64 for 64 bit 

               sparc: sparc for 32 bit, sparc64 for 64 bit

CROSS_COMPILE:指定一个binutiles文件名的可选固定部分,如arm-none-linux-gnueabi-  ,可以是文件名的一部分,或者是完整路径。

CF: sparc的附加选项,经常在命令行下这样使用make CF=-Wbitwise C=2

INSTALL_PATH:指定把要升级的内核和system.map的镜像放在哪个目录,默认是/boot,但你可以指定为别的路径。

INSTALLKERNEL:当使用make  install 时安装脚本被调用,默认名字为installkernel  这个脚本可以有以下参数

                                    1、$1 - kernel version

                                    2、$2 - kernel image file

                                    3、$3 - kernel map file

                                    4、$4 - default install path (use root directory if blank)

MODLIB:指定安装模块的路径,默认是$(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)

INSTALL_MOD_PATH:指定一个预安装的模块库

INSTALL_MOD_STRIP:

INSTALL_FW_PATH:指定安装固件的路径,默认值是$(INSTALL_MOD_PATH)/lib/firmware

INSTALL_HDR_PATH:当执行make headers_*时,指定安装用户空间头文件的路径,默认$(objtree)/usr, objtree是输出文件的路径

KBUILD_MODPOST_WARN:未定义符号在最后模块链接阶段避免错误,把错误改成警告

KBUILD_MODPOST_NOFINAL:设置后可以跳过最后链接模块,这个在加快测试编译时很有用

KBUILD_EXTRA_SYMBOLS:模块中使用的符号信赖于别的模块

ALLSOURCE_ARCHS:使用tags/TAGS/cscope这些时,可以指定多于一种体系结构,如make ALLSOURCE_ARCHS="x86 mips arm" tags

KBUILD_ENABLE_EXTRA_GCC_CHECKS:打开gcc的-w。。。选项

KBUILD_BUILD_TIMESTAMP:

KBUILD_BUILD_USER, KBUILD_BUILD_HOST:这两个变量允许覆盖在启动和/proc/version 中 的字符串user@host

【上篇】
【下篇】

抱歉!评论已关闭.