linux内核Makefile详解

Linux 内核 Makefile 详解 Linux 内核 Makefile 是 Linux 内核编译过程中的核心组件,它负责将源代码编译成可执行文件。了解 Linux 内核 Makefile 对于开发设备驱动、理解内核代码结构都是非常重要的。 目录 1. 概述 Linux 内核 Makefile 由五个部分组成:顶层 Makefile、.config 文件、arch/$(ARCH)/Makefile、scripts/Makefile.* 和 kbuild Makefiles。顶层 Makefile 负责将内核配置文件转换为可执行文件。.config 文件是由内核配置程序生成的,用于记录内核的配置信息。arch/$(ARCH)/Makefile 是具体架构的 Makefile,提供架构相关的信息。scripts/Makefile.* 包含了所有的定义、规则等信息。kbuild Makefiles 是内核源代码中的 Makefile 文件,用于执行编译命令。 2. 用户与作用 Linux 内核 Makefile 的用户可以分为四类:使用者、普通开发人员、架构开发人员和维护人员。使用者只是编译内核的人,普通开发人员维护某一功能的 Kbuild Makefile,架构开发人员工作在具体架构上,维护人员负责维护内核 Makefile。 3. Kbuild 文件 Kbuild 文件是 Linux 内核 Makefile 的核心组件,用于编译内核代码。Kbuild 文件可以定义目标、编译进内核、编译可装载模块、输出符号、目标库文件、递归访问目录、编辑标志、命令行依赖关系、跟踪依赖关系和特殊规则等。 3.1 目标定义 Kbuild 文件可以定义目标,例如编译内核代码生成可执行文件。 3.2 编译进内核 - obj-y obj-y 是 Kbuild 文件中用于编译进内核的目标,例如编译驱动程序。 3.3 编译可装载模块 - obj-m obj-m 是 Kbuild 文件中用于编译可装载模块的目标,例如编译网络驱动程序。 3.4 输出的符号 Kbuild 文件可以输出符号,例如输出内核版本号。 3.5 目标库文件 - lib-y lib-y 是 Kbuild 文件中用于定义目标库文件的目标,例如编译内核库文件。 3.6 递归访问目录 Kbuild 文件可以递归访问目录,例如访问子目录中的 Makefile 文件。 3.7 编辑标志 Kbuild 文件可以定义编辑标志,例如定义编译选项。 3.8 命令行依赖关系 Kbuild 文件可以定义命令行依赖关系,例如定义编译命令的依赖关系。 3.9 跟踪依赖 Kbuild 文件可以跟踪依赖关系,例如跟踪编译命令的依赖关系。 3.10 特殊规则 Kbuild 文件可以定义特殊规则,例如定义编译选项的规则。 3.11 $(CC) 支持的函数 Kbuild 文件可以使用 $(CC) 支持的函数,例如使用 $(CC) 编译内核代码。 4. 本机程序支持 Kbuild 文件可以支持本机程序,例如支持编译本机驱动程序。 4.1 简单的本机程序 Kbuild 文件可以支持简单的本机程序,例如编译简单的驱动程序。 4.2 复合的本机程序 Kbuild 文件可以支持复合的本机程序,例如编译复杂的驱动程序。 4.3 定义共享库 Kbuild 文件可以定义共享库,例如定义内核共享库。 4.4 使用 C++ 编写的本机程序 Kbuild 文件可以支持使用 C++ 编写的本机程序,例如编译 C++ 驱动程序。 4.5 控制本机程序的编译选项 Kbuild 文件可以控制本机程序的编译选项,例如定义编译选项的规则。 4.6 编译主机程序时 Kbuild 文件可以在编译主机程序时执行某些操作,例如编译驱动程序。 4.7 使用 hostprogs-$(CONFIG_FOO) Kbuild 文件可以使用 hostprogs-$(CONFIG_FOO) 定义主机程序,例如编译驱动程序。 5. Kbuild 清理 Kbuild 文件可以执行清理操作,例如清理临时文件。 6. 架构 Makefile Kbuild 文件可以生成架构 Makefile,用于编译内核代码。 6.1 调整针对某一具体架构生成的镜像 Kbuild 文件可以调整针对某一具体架构生成的镜像,例如生成 ARM 架构的镜像。 6.2 将所需文件加到 archprepare 中 Kbuild 文件可以将所需文件加到 archprepare 中,例如添加驱动程序到 archprepare 中。 6.3 递归下向时要访问的目录列表 Kbuild 文件可以递归下向时访问目录列表,例如访问子目录中的 Makefile 文件。 6.4 具体架构的启动镜像 Kbuild 文件可以生成具体架构的启动镜像,例如生成 ARM 架构的启动镜像。 6.5 构造非 Kbuild 目标 Kbuild 文件可以构造非 Kbuild 目标,例如构造驱动程序。 6.6 构建启动镜像的命令 Kbuild 文件可以构建启动镜像的命令,例如编译驱动程序。 6.7 Kbuild 自定义命令 Kbuild 文件可以自定义命令,例如定义编译选项的规则。 6.8 联接器预处理脚本 Kbuild 文件可以执行联接器预处理脚本,例如执行编译命令。 7. Kbuild 变量 Kbuild 文件可以定义变量,例如定义内核版本号。 8. Makefile 语言 Kbuild 文件使用 Makefile 语言,例如使用 Makefile 语法编译内核代码。 9. 关于作者 本文档由 Linux 内核开发者编写,旨在帮助开发者更好地理解 Linux 内核 Makefile。 10. TODO TODO 列表用于记录需要完成的任务,例如编写新的 Makefile 规则。
























剩余26页未读,继续阅读

- jingjing348732012-12-22内容很一般 不够详细

- 粉丝: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- java课程设计(人事管理系统)(2).doc
- 计算机学专业实习报告.docx
- 基于单片机的投币式全自动豆浆机专业系统设计.doc
- 软件行业劳动合同(5).doc
- 通信行业后勤服务中心房产管理岗位说明书(1).doc
- 基于PLC全自动药品包装机系统设计(1).doc
- 数据结构课程设计c语言版《飞机订票系统》分解-.docx
- 实验小学计算机房安全管理制度.docx
- 久其企业报表决算软件培训手册.pptx
- 操作系统课程设计小型的操作系统样本.doc
- 网站设计制作合同书范本通用版.doc
- PhotoShop-CS4快捷键最全版.doc
- 基于西门子PLC控制交通灯毕业设计(1).doc
- Excel常用基本知识培训.ppt
- 互联网+智能储物柜项目计划书.doc
- 专业课程设计傅里叶变换在通信系统中的应用研究应用终稿.doc


