微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Linux 2.6内核Makefile分析

Linux 2.6内核Makefile分析

时间:03-01 来源:与非网 博客 点击:

clean命令清除在编译内核生成的大部分文件,例如主机程序,列举在 $(hostprogs-y)、$(hostprogs-m)、$(always)、$(extra-y)和$(targets)中目标文件都将被删除。代码目录数中的"*.[oas]"、"*.ko"文件和一些由编译系统产生的附加文件也将被删除。
附加文件可以使用$(clean-files)进行定义。
例如: #drivers/pci/Makefile
clean-files := devlist.h classlist.h
当执行"make clean"命令时, "devlist.h classlist.h"两个文件将被删除。内核编译系统默认这些文件与makefile具有相同的相对路径,否则需要设置以'/'开头的绝对路径。
删除整个目录使用以下方式:
例如: #scripts/package/Makefile
clean-dirs := $(objtree)/debian/
这样就将删除包括子目录在内的整个debian目录。如果不使用以'/'开头的绝对路径内核编译系统见默认使用相对路径。
通常内核编译系统根据"obj-* := dir/"进入子目录,但是在体系makefile中需要显式使用如下方式:
例如: #arch/i386/boot/Makefile
subdir- := compressed/
上面赋值语句指示编译系统执行"make clean"命令时进入compressed/目录。
在编译最终的引导映像文件的makefile中有一个可选的目标对象名称是archclean。
例如: #arch/i386/Makefile
archclean:
$(Q)$(MAKE) $(clean)=arch/i386/boot
当执行"make clean"时编译器进入arch/i386/boot并象通常一样工作。arch/i386/boot 中的makefile文件可以使用subdir-标识进入更下层的目录。
注意1: arch/$(ARCH)/Makefile不能使用"subdir-",因为它被包含在顶层makefile文件中,在这个位置编译机制是不起作用的。
注意2: 所有列举在core-y、libs-y、drivers-y和net-y中的目录将被"make clean"命令清除。

4 小结

随着Linux的飞速发展,越来越多的开发人员将关注的焦点集中到Linux的研究和开发上。如果想对Linux内核进行研究和开发,就必须首先熟悉Linux 内核Makefile的组织和编译过程。目前Linux最新的稳定内核版本为2.6.17,但是当今绝大部分对于Linux Makefile的介绍都是基于2.4内核的,可以说关于2.6内核Makefile相关的文章凤毛麟角,我特意抽时间完成了这篇分析文章,让读者迅速熟悉Linux最新Makefile体系,从而加深对内核的理解,同时也希望能对Linux在公司的推广起到一定的推动作用。

本文来自CSDN博客,http://blog.csdn.net/mbtrend/archive/2008/10/05/3016889.aspx

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top