内核编译过程中会生成以下类型的文件 参见Documentation/kbuild/kbuild.txt
modules.order:这个文件记录了Makefile中模块出现的顺序。modprobe通过它来确定解决多个模块匹配的别名(指定模块的绝对路径)。
如:kernel//home/cjz/Desktop/test/driver/input/vms.ko
modules.builtin:这个文件列出了所有编译到内核的模块,通过这个当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