摘自Linux内核documentation:
2.4构建单独的文件
It is possible to build single files that are part of a module.
This works equally well for the kernel, a module, and even for
external modules.
Example (The module foo.ko, consist of bar.o and baz.o):
make -C $KDIR M=$PWD bar.lst
make -C $KDIR M=$PWD baz.o
make -C $KDIR M=$PWD foo.ko
make -C $KDIR M=$PWD /
我无法理解这些命令的含义。
制作-C $ KDIR M = $ PWD bar.lst
是不是意味着:找bar.c并将其编译成bar.1st?
制作-C $ KDIR M = $ PWD foo.ko
是否意味着:寻找所有* .o并将它们链接到foo.ko?它是否也寻找* .1st?
制作-C $ KDIR M = $ PWD /
这是什么意思?
答案 0 :(得分:0)
这些命令都意味着"做makefile所说的任何内容都是构建命名目标所必需的#34;。这样做所涉及的行动是我无法说出的,并且将完全取决于具体目标是什么。
如果你想知道,make会对给定命令做什么,为它提供-n
参数。
答案 1 :(得分:0)
首先让我们了解
make -C $KDIR M=$PWD [target]
此处目标可以是定义为目标的任何内容(即bar.o:)
通常我们在make文件中使用依赖项。
在给定示例中为三个文件
foo.c bar.c baz.c
foo.c具有module_init即入口点
该语句指出我们可以一次构建所有文件。 或单个文件,最后将它们链接在一起。
简而言之,您可以尝试仅编译bar.c而不编译其他两个文件。只产生bar.o一旦生成所有.o文件,您就可以创建.ko文件。
在其中您可以编译一次ufs.ko或 balloc.o cylinder.o dir.o file.o ialloc.o inode.o等 并编译ufs以创建ufs.ko