联接也是有顺序的,那是因为有些函数(module_init()/__initcall)将会在启
动时按照他们出现的顺序进行调用。所以,记住改变联接的顺序可能改变你
SCSI 控制器的检测顺序,从而导致你的硬盘数据损害。
例子:
#drivers/isdn/i4l/Makefile
&n
bsp; # Makefile for the kernel ISDN subsystem and device drivers.
# Each configuration option enables a list of files.
obj-$(CONFIG_ISDN) += isdn.o
obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
--- 3.3 编译可装载模块 - obj-m
$(obj-m) 列举出了哪些文件要编译成可装载模块。
一个模块可以由一个文件或多个文件编译而成。如果是一个源文件,Kbuild
Makefile 只需简单的将其加到$(obj-m)中去就可以了。
例子:
#drivers/isdn/i4l/Makefile
obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o
注意:此例中 $(CONFIG_ISDN_PPP_BSDCOMP) 的值为'm'
如果内核模块是由多个源文件编译而成,那你就要采用上面那个例子一样的
方法去声明你所要编译的模块。
Kbuild 需要知道你所编译的模块是基于哪些文件,所以你需要通过变量
$(<module_name>-objs)来告诉它。
例子:
#drivers/isdn/i4l/Makefile
obj-$(CONFIG_ISDN) += isdn.o
isdn-objs := isdn_net_lib.o isdn_v110.o isdn_common.o
在这个例子中,模块名将是 isdn.o,Kbuild 将编译在$(isdn-objs)中列出的
所有文件,然后使用"$(LD) -r"生成 isdn.o。
Kbuild 能够识别用于组成目标文件的后缀-objs 和后缀-y。这就让 Kbuild
Makefile 可以通过使用 CONFIG_ 符号来判断该对象是否是用来组合对象的。
例子:
#fs/ext2/Makefile
评论0
最新资源