Skip to main content
 首页 » 编程设计

linux-device-driver之.o 和 .ko 文件之间的区别

2024年05月10日20lautakyan007

我正在编写简单的 Linux 模块 mod.c。 当我编译 mod.c 文件时,它会创建两个输出文件 mod.omod.ko。 所以我只想知道 mod.o 和 mod.ko 文件有什么区别?

请您参考如下方法:

简短的回答是,.ko 文件是与内核所需的一些内核自动生成的数据结构链接的目标文件。

.o 文件是模块的目标文件 - 编译 C 文件的结果。然后,内核构建系统会自动创建另一个 C 文件,其中包含一些描述内核模块的数据结构(名为 your_module_kmod.c),将此 C 文件编译为另一个目标文件,并将您的目标文件和它构建的目标文件链接在一起以创建 .ko 文件。

内核中负责加载内核模块的动态链接器期望找到内核放入.ko文件中的kmod对象中的数据结构,并且将无法加载没有它们的内核模块。