我有一个非常基本的问题。当我们使用 makefile 创建驱动程序时,我们会看到创建了许多文件,如下所示
- 模块.symvers
- .mod.c
- 内置.o
- .mod.o
- .o
- 模块.顺序
- .ko
到目前为止,我只对 *.ko 文件感兴趣,不关心任何其他文件。但我仍然想知道其他文件,它们有什么用? 请回复
最佳答案
来自评论中指出的文档和其他一些来源( 1 、 2 和 3 ):
- Module.symvers - “Module.symvers 包含内核构建中所有导出符号的列表。”
- .mod.c - “是一个基本上包含有关模块的信息(版本信息等)的文件”
- built-in.o - 该文件与内核模块无关,而是与正常的内核构建相关。 “Kbuild 编译所有 $(obj-y) 文件。然后调用“$(LD) -r”将这些文件合并到一个built-in.o 文件中。built-in.o 随后链接到 vmlinux由父 Makefile”
- .mod.o - 编译 .mod.c 文件产生的 objcet 文件。
- .o - 编译模块源文件产生的目标文件。
- modules.order - “如果您一起编译多个模块,它将列出 .ko 的编译和创建的顺序”
- .ko - 加载到内核中的最终内核模块二进制文件。
关于linux - 编译linux设备驱动程序时创建的各种文件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20924738/