Linux 2.6内核Makefile浅析
来源:互联网 发布:icloud怎么用恢复数据 编辑:程序博客网 时间:2024/06/05 18:57
http://blog.sina.com.cn/s/blog_4670451c0100kjdo.html
1 概述
Makefile由五个部分组成:
- Makefile:根目录Makefile,它读取.config文件,并负责创建vmlinux(内核镜像)和modules(模块文件)。
- .config:内核配置文件(一般由make menuconfig生成)。
- arch/$(ARCH)/Makefile:目标处理器的Makefile。
- scripts/Makefile.*:所有kbuild Makefile的规则,它们包含了定义/规则等。
- kbuild Makefiles:每个子目录都有kbuild Makefile,它们负责生成built-in或模块化目标。(注意:kbuild Makefile是指使用kbuild结构的Makefile,内核中的大多数Makefile都是kbuild Makefile。)
2 kbuild文件
2.1 obj-y和obj-m
obj-$(CONFIG_FOO) += foo.o
2.1.1 obj-y生成built-in.o
2.1.2 目标由多个源文件编译得到
2.1.3 调用子目录Makefile
2.2 lib-y和lib-m
2.3 编译选项变量
2.3.1 ccflags-y、asflags-y、ldflags-y
这三个变量只在当前Makefile中有效。补充:$(KBUILD_CFLAGS)是定义在根目录Makefile中的变量,它适用于整个内核数。
2.3.2 subdir-ccflags-y、subdir-asflags-y
这两个变量作用于当前Makefile及其所有子目录。
2.3.2 CFLAGS_$@、AFLAGS_$@
这两个变量只在当前Makefile中有效。$@可以用来指定文件名,让不同文件可以使用不同的编译选项。例如:
2.4 $(src)、$(obj)、$(kecho)
2.5 $(CC)相关功能
2.5.1 as-option、ld-option、cc-option
2.5.2 cc-option-yn
2.5.3 cc-option-align
2.5.4 cc-version、cc-ifversion 、cc-fullversion
cc-ifversion在版本符合条件的前提下返回最后一个参数。示例如下:
如果$(CC)版本低于4.2,那么ccflags-y将等于-O1。
cc-fullversion给出更详细的版本信息,例如:
2.5.5 cc-cross-prefix
cc- cross-prefix用于检查是否存在给定前缀的$(CC),如存在,返回第一个匹配的前缀,否则返回空。如有多个前缀需要匹配,各前缀之间使用单个空格隔开。例如:
(注:本文所述内容来自kernel-2.6.30\Documentation\kbuild\makefiles.txt,适用于Linux 2.6内核)
- Linux 2.6内核Makefile浅析
- Linux 2.6内核Makefile浅析
- Linux 2.6内核Makefile浅析
- Linux 2.6内核Makefile浅析
- Linux 2.6内核Makefile浅析
- Linux 2.6内核Makefile浅析
- Linux 2.6内核Makefile浅析
- Linux 2.6内核Makefile浅析
- Linux内核Makefile浅析
- Linux内核Makefile浅析
- Linux内核Makefile浅析
- Linux内核Makefile浅析
- Linux内核Makefile浅析
- Linux内核Makefile浅析
- Linux内核Makefile浅析
- Linux内核Makefile浅析
- Linux内核Makefile浅析
- Linux内核Makefile浅析
- android图像处理系列之三--图片色调饱和度、色相、亮度处理
- java性能优化技巧
- Git版本控制问题
- 机器学习之奇异值分解基础(SVD)
- error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- Linux 2.6内核Makefile浅析
- 程序员面试智力题 (3)
- UP智能家居系统之节点cc2530源码分析(1)
- 安卓图表引擎AChartEngine(四) - 源码示例 嵌入Acitivity中的折线图
- telnet 简单客户端学习
- OCP-1Z0-051 第116题 GROUP BY,HAVING子句应用
- java synchronized详解
- Android Animation 为布局添加动画效果
- Linux Shell 常用指令示例