内核配置文件.config与内核编译makefile?
内核是利用make编译并安装的一个C程序。而这个C程序很现代很复杂,仅凭单一个makefile难以完成编译任务。假设内核编译只需要一个makefile,这个makefile具体也会因编译不同功能特性的内核而有所不同,也就是说在编译内核先“编译”编译的所需要的makefile,这个makefile是动态生成的。那么这个动态的makefile从何而来呢?答案是config命令通过读取[内核配置文件](kernel configuration file)来生成编译内核所需要所有文件(包括makefile);那[内核配置文件]又是哪来的呢?还是make生成的,各种make的config(xconfig/menuconfig)会生成所需要的[内核配置文件]。
内核配置文件(kernel configuration file)保存为内核源代码的顶层目录的.config文件。发行版的内核配置文件通常在/boot/内。
何为makefile?
makefile包含用以构建应用程序的一组规则集(set of rules)。并且第一条[规则]是特殊的[规则],叫[默认规则](default rule)。一条[规则]由三部分组成:目标(target)、前提条件(prerequisites)和命令动作(command):
[python] view plaincopy
- target: prereq1 prereq2
- [tab]commands
[目标]是被构建(made)的[文件]或其它东西。[前提条件]或者叫依赖(dependents)是构建目标的“材料”。而[命令动作]是利用[前提条件]构建[目标]的shell命令。
以下是编译C源码的规则例子:
[python] view plaincopy
- foo.o: foo.c foo.h
- tab]gcc -c foo.c
注意格式,冒号前是[目标],后是[前提条件];[命令]在第二行,并且开始于一个tab字符。
内核编译tips
- 查看完整的 (gcc, ld)命令行: $ make V=1
- 清理所有的生成文件 (to create patches...): $ make mrproper
- 部分编译:$ make M=drivers/usb/serial
- 单独模块编译:$ make drivers/usb/serial/visor.ko
- 别处编译(假设源码在CDROM):
- $ cd /mnt/cdrom/linux-2.6.17.11
- $ make O=~/linux/linux-2.6.17.11
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |