设为首页 加入收藏

TOP

Linux-2.6.x makefile(二)
2014-11-24 01:25:49 来源: 作者: 【 】 浏览:2
Tags:Linux-2.6.x makefile


Example:


# arch/arm/kernel/Makefile


AFLAGS_head-armv.o := -DTEXTADDR=$(TEXTADDR) -traditional


AFLAGS_head-armo.o := -DTEXTADDR=$(TEXTADDR) –traditional


8、对依赖的追踪


Kbuild追踪下面的依赖:


1)、所有必备的文件(*.c和*.h)


2)、用在所有必备文件中的CONFIG_选项


3)、用于编译目标的命令行


因此,如果改变了$(CC)的选项,所有受影响的文件都会被重新编译。


9、特殊规则


如果kbuild的基本组织没提供必要的支持,特殊规则就会被使用。典型的例子就是在编译过程中产生头文件。另一个例子就是体系结构相关的Makefile,为了准备启动映像,它需要特殊的规则。


Kbuild不在Makefile所在的目录中执行,所以所有的特殊规则应拱必备文件和目标文件的相对路径。定义特殊规则时要用到两个变量:


$(src)


$(src)是指向Makefile所在目录的相对路径。涉及到源目录树中的文件总会用到$(src)。


$(obj)


$(obj)是指向保存目标的目录的相对路径。涉及到生成文件时总会用到$(obj)。


Example:


#drivers/scsi/Makefile


$(obj)/53c8xx_d.h: $(src)/53c7,8xx.scr $(src)/script_asm.pl


$(CPP) -DCHIP=810 - = 3.00


cc-option-align = -falign


Example:


CFLAGS += $(cc-option-align)-functions=4


上例中,gcc >=3.00时,使用-falign-functions=4。gcc -objs)列出了所有对像,这些对像被链接成最终的可执行程序。


Example:


#scripts/lxdialog/Makefile


hostprogs-y := lxdialog


lxdialog-objs := checklist.o lxdialog.o


3、 定义共享库


Kbuild提供对共享库的支持,但用法会受限制。下例中,用libkconfig.so共享库链接生成可执行文件conf.


Example:


#scripts/kconfig/Makefile


hostprogs-y := conf


conf-objs := conf.o libkconfig.so


libkconfig-objs := expr.o type.o


共享库总是需要一个对应的-objs行,上例中libkconfig共享由expr.o和type.o组合而成。expr.o和type.o会被编译成位置无关代码,并被链接成共享库libkconfig.so。c++不支持共享库。


4、 把c++用于主机程序


kbuild提供了对c++主机程序的支持。


Example:


#scripts/kconfig/Makefile


hostprogs-y := qconf


qconf-cxxobjs := qconf.o


上例中可执行程序由c++文件qconf.cc(由$(qconf-cxxobjs)标识)组合生成.


如果qconf由.c和.cc文件混合组成,那就要再添加一行


Example:


#scripts/kconfig/Makefile


hostprogs-y := qconf


qconf-cxxobjs := qconf.o


qconf-objs := check.o


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux 内核流量控制 TC 详解 下一篇在Ubuntu Server 8.10上搭建Hadoo..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: