Makefile文件功能描述

Makefile在程序编译中扮演批处理角色,用于指导make工具自动确定哪些源文件需要重新编译。它包含编译规则、目标文件与依赖文件的关系,以及编译命令。当源代码变更时,执行make命令即可完成必要的更新工作。Makefile常用于指示如何将内核代码编译链接成可执行映像文件,涉及汇编、GCC编译和链接等多个步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Makefile 文件功能描述

Makefile 文件相当于程序编译过程中的批处理文件。是工具程序 make 运行时的输入数据文件。只要在含有 Makefile 的当前目录中键入 make 命令,它就会依据 Makefile 文件中的设置对源程序或目标代码文件进行编译、连接或进行安装等操作。

make工具程序能自动地确定一个大程序系统中哪些程序文件需要被重新编译,并发出命令对这些程序文件进行编译。在使用 make 之前,需要编写 Makefile 信息文件,该文件描述了整个程序包中各程序之间的关系,并针对每个需要更新的文件给出具体的控制命令。通常,执行程序是根据其目标文件进行更新的,而这些目标文件则是由编译程序创建的。一旦编写好一个合适的 Makefile 文件,那么在你每次修改过程序系统中的某些源代码文件后,执行 make 命令就能进行所有必要的重新编译工作。make 程序根据Makefile 数据文件和代码文件的最后修改时间(last-modification time)来确定哪些文件需要进行更新,对于每一个需要更新的文件它会根据 Makefile 中的信息发出的相应的命令。在 Makefile 文件中,开头为“#” 的行是注释行。文件开头部分的“=” 赋值语句定义了一些参数或命令的缩写。

这个 Makefile 文件的主要作用是指示 make 程序最终使用独立编译连接成的 tool/ 目录中的 build 执行程序将所有内核编译代码连接和全并成一个可运行的内核映像文件 image。 具体是对 boot/ 中的bootsect.ssetup.s 使用 8086汇编器进行编译,分别生成各自的执行模块。再对源代码中的其他所有程序使用GNU 的编译器 gcc/gas 进行编译,并链接模块 system。最后再用 build 工具将这三块组合成一个内核映像文件 imagebuild 是由 tools/build.c 源程序编译而成的一个独立的执行程序,它本身并没有被编译链接到内核代码中。

内核编译链接/组合结构图:内核编译链接/组合结构

Linux内核源代码中,除 tools/init/和 boot/目录外,其余每个子目录均包含一个相应的 Makefile 文件,这些文件结构完全一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值