makefile 语法_makefile define用法_nis makefile 语法

电脑杂谈  发布时间:2017-04-11 03:08:44  来源:网络整理

本文翻译文档的原英文文档位于linux内核源码树

的/Documentation/kbuild目录下

Linux内核的Makefiles

这个文档描述Linux内核的Makefiles

=== 目录

===1 概要

===2 Makefiles对于不同角色的作用

===3 kbuild文件

--- 3.1 目标定义

--- 3.2 Built-in对象目标 - obj-y

--- 3.3 可加载模块目标 - obj-m

--- 3.4 导出符号的对象

--- 3.5 库文件目标 - lib-y

--- 3.6 进入子目录

--- 3.7 编译标记

--- 3.8 命令行依赖项

--- 3.9 依赖性跟踪

--- 3.10 特殊规则

--- 3.11 $(CC) 支持的函数

===4 主机程序支持

--- 4.1 一个简单的支持主机程序例子

--- 4.2 复合主机程序

--- 4.3 定义共享库

--- 4.4 使用C的主机程序

--- 4.5 控制主机程序的编译选项

--- 4.6 主机程序的最终建立

--- 4.7 使用hostprogs-$(CONFIG_FOO)

===5 Kbuild的清除机制

===6 具体架构的Makefiles

--- 6.1 设置用来调整生成架构的变量

--- 6.2 增加先决条件到archprepare

--- 6.3 递归时列出需要访问的目录

--- 6.4 与架构相关的启动映像

--- 6.5 建立非kbuild的目标

--- 6.6 用来建立启动映像的命令

--- 6.7 自定义kbuild命令

--- 6.8 预处理链接脚本

===7 Kbuild变量

===8 Makefile语言

===9 贡献者

===10 下一步的工作

=== 1 概要

Makefiles包含下面5个部分:

Makefile 顶层Makefile文件.

.config 内核配置文件

arch/$(ARCH)/Makefile 体系架构的Makefile文件.

scripts/Makefile.* 对于所有kbuild和Makefiles都有效的规则等

kbuildMakefiles 大约有500个makefiles

顶层Makefiles读取内核配置程序生成的.config文件。

顶层Makefile用来生成两个主要的目标:vmlinux(内核映像)和模块(任何模块文件)。

Makefile通过递归遍历内核树中的所有子目录来生成这些目标。

递归访问的子目录列表时依靠内核配置文件来决定的。顶层Makefile包含一个名叫arch/$(ARCH)/Makefile的体系架构Makefile。这个Makefile文件向顶层Makefile提供具体的架构信息。

每个子目录都有一个kbuild Makefile,这个Makefile承载着从上层Makefile传递下来的命令。kbuild Makefile使用.config文件中的信息来生成文件列表,kbuild使用这个文件列表来决定生成需要加载入内核的目标或者模块。

scripts/Makefile.*包含了所有的定义、规则等等。基于kbuild makefiles使用这些定义、规则可以构建内核。

=== 2 Makefiles对于不同角色的作用

有四类不同的人会用到Makefiles。

*用户*是生成内核的人。这类人通常使用“make menuconfig”或者“make”命令。他们通常不去阅读或者修改makefile文件(或者其它任何源文件)。

*一般的开发者*是工作在内核外层的人,比如设备驱动,文件系统以及网络协议。这些人需要去维护他们修改的子系统的kbuild Makefiles。为了有效地去实现这些工作,他们通常取药一些关于内核makefile的整体知识,加上一些关于kuild公共接口的具体信息。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40628-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...