[英]How to understand “Building Separate Files” for a Linux kernel module?
摘自 Linux 内核文档:
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 /
我无法理解这些命令是什么意思。
make -C $KDIR M=$PWD bar.lst
这是否意味着:查找 bar.c 并将其编译为 bar.1st?
make -C $KDIR M=$PWD foo.ko
这是否意味着:查找所有 *.o 并将它们链接到 foo.ko? 它也寻找*.1st吗?
make -C $KDIR M=$PWD /
这是什么意思?
首先让我们了解
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
这些命令都意味着“做任何makefile所说的构建命名目标所必需的事情”。 我不能说这样做所涉及的一系列行动,这将完全取决于具体目标是什么。
如果你想知道,具体来说,make 会对给定的命令做什么,给它-n
参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.