没有合适的资源?快使用搜索试试~ 我知道了~
Linux内核Makefile文件.doc
0 下载量 110 浏览量
2022-11-29
21:28:40
上传
评论
收藏 123KB DOC 举报
温馨提示
试读
26页
Linux内核Makefile文件.doc
资源推荐
资源详情
资源评论
Linux 内核 Makefile 文件
目录
1 概述................................................................................................................................................3
2 角色分工........................................................................................................................................4
3 内核编译文件................................................................................................................................5
3.1 目标定义.............................................................................................................................5
3.2 内嵌对象 - obj-y................................................................................................................5
3.3 可加载模块 - obj-m...........................................................................................................6
3.4 导出符号目标.....................................................................................................................7
3.5 库文件 - lib-y.....................................................................................................................7
3.6 目录递归.............................................................................................................................7
3.7 编译标记.............................................................................................................................8
3.9 依赖关系.............................................................................................................................9
3.10 特殊规则 $(obj)...............................................................................................................9
3.11 $(CC)支持功能................................................................................................................10
4 辅助程序......................................................................................................................................12
4.1 简单辅助程序...................................................................................................................12
4.2 组合辅助程序...................................................................................................................12
4.3 定义共享库.......................................................................................................................12
4.4 C++语言使用方法 ............................................................................................................13
4.5 辅助程序编译控制选项...................................................................................................13
4.6 何时建立辅助程序...........................................................................................................14
4.7 使用 hostprogs-$(CONFIG_FOO) ...................................................................................15
5 编译清除机制..............................................................................................................................16
6 体系 Makefile 文件 .....................................................................................................................18
6.1 变量设置...........................................................................................................................18
6.2 增加预设置项...................................................................................................................20
6.3 目录表...............................................................................................................................20
6.4 引导映像...........................................................................................................................21
6.5 编译非内核目标...............................................................................................................22
6.6 编译引导映像命令...........................................................................................................22
6.7 定制编译命令...................................................................................................................24
6.8 预处理连接脚本...............................................................................................................24
7 Kbuild 变量 ..................................................................................................................................26
8 Makefile 语言 ...............................................................................................................................27
9 Credits...........................................................................................................................................27
10 TODO .........................................................................................................................................27
1 概述
Makefile 包括五部分:
Makefile 顶层 Makefile 文件
.config 内核配置文件
arch/$(ARCH)/Makefile 机器体系 Makefile 文件
scripts/Makefile.* 所有内核 Makefiles 共用规则
kbuild Makefiles 其它 Makefile 文件
通过内核配置操作产生.config 文件,顶层 Makefile 文件读取该文件的配置。顶层
Makefile 文件负责产生两个主要的程序:vmlinux (内核 image)和模块。顶层 Makefile 文件根
据内核配置,通过递归编译内核代码树子目录建立这两个文件。顶层 Makefile 文件文本一
个名为 arch/$(ARCH)/Makefile 的机器体系 Makefile 文件。机器体系 Makefile 文件为顶层
Makefile 文件提供与机器相关的信息。
每一个子目录有一个 Makefile 文件,子目录 Makefile 文件根据上级目录 Makefile 文件
命令启动编译。这些 Makefile 使用. config 文件配置数据构建各种文件列表,并使用这些文
件列表编译内嵌或模块目标文件。
scripts/Makefile.*包含了所有的定义和规则,与 Makefile 文件一起编译出内核程序。
2 角色分工
人们与内核 Makefile 存在四种不同的关系:
*用户* 用户使用"make menuconfig"或"make"命令编译内核。他们通常不读或编辑内核
Makefile 文件或其他源文件。
*普通开发者* 普通开发者维护设备驱动程序、文件系统和网络协议代码,他们维护相关子
系统的 Makefile 文件,因此他们需要内核 Makefile 文件整体性的一般知识和关于 kbuild 公
共接口的详细知识。
*体系开发者* 体系开发者关注一个整体的体系架构,比如 sparc 或者 ia64。体系开发者既
需要掌握关于体系的 Makefile 文件,也要熟悉内核 Makefile 文件。
*内核开发者* 内核开发者关注内核编译系统本身。他们需要清楚内核 Makefile 文件的所有
方面。
本文档的读者对象是普通开发者和系统开发者。
3 内核编译文件
内核中大多数 Makefile 文件是使用 kbuild 基础架构的 Makefile 文件。本章介绍 kbuild
的 Makefile 中的语法。
3.1 节“目标定义”是一个快速导引,后面各章有详细介绍和实例。
3.1 目标定义
目标定义是 Makefile 文件的主要部分(核心)。这些目标定义行定义了如何编译文件,
特殊的兼容选项和递归子目录。
最简单的 Makefile 文件只包含一行:
Example:
obj-y += foo.o
这行告诉 kbuild 在该目录下名为 foo.o 的目标文件(object),foo.o 通过编译 foo.c 或者
foo.S 而得到。
如果 foo.o 编译成一个模块,则使用 obj-m 变量,因此常见写法如下:
Example:
obj-$(CONFIG_FOO) += foo.o
$(CONFIG_FOO)可以代表 y(built-in 对象)或 m(module 对象)。如果 CONFIG_FOO 不
是 y 或 m,那么这个文件不会被编译和链接。
3.2 内嵌对象 - obj-y
Makefile 文件将为编译 vmlinux 的目标文件放在$(obj-y)列表中,这些列表依赖于内核
配置。
Kbuild 编译所有的$(obj-y)文件,然后调用"$(LD) -r"合并这些文件到一个 built-in.o 文
件中。built-in.o 经过父 Makefile 文件链接到 vmlinux。$(obj-y)中的文件 顺序很重要。列表
中文件允许重复,文件第一次出现将被链接到 built-in.o,后续出现该文件将被忽略。
链接顺序之所以重要是因为一些函数在内核引导时将按照他们出现的顺序被调用,如
函数(module_init() / __initcall)。所以要牢记改变链接顺序意味着也要改变 SCSI 控制器的检
剩余25页未读,继续阅读
资源评论
黑色的迷迭香
- 粉丝: 703
- 资源: 4万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STM8L101F3P6单片机+CC1100模块433M遥控器设计硬件(原理图+PCB)工程文件.zip
- 上传下载铁人下载系统 Liuxing 1.0-liuxing1.0.rar
- 南京邮电大学数学实验实力雄厚,凭借其优秀的师资力量、丰富的实践教学资源和卓越的科研成果,成为国内一流的数学实验教学和科研基地
- 【火爆朋友圈的今天吃什么源码 v1.0】随机的为用户带来每一天的用餐选择和推荐.rar
- MPU6050中文版数据手册
- 上传下载手机电影下载-mobiledy.rar
- 响应式旅游网站源码下载 马尔代夫旅游网站.rar
- CMS小涴熊漫画连载系统漫画网站源码 带采集API.rar
- 福袋点点.apk
- 基于STM32的电子秤采用0.96寸OLED显示UI界面源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功