内核模块:.o与.ko


10

似乎包含内核模块文件被称为.o,至少这是我的身影看着像一个教程时,这一个。但是,在我的debian压缩框中,这些文件似乎称为.ko

它依赖于分布(或其verison)文件是否被称为.o.ko,并且是他们或多或少相同,否则?

Answers:


11

我在这里找到以下答案:

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

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

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

同样从那个来源,引用tldp:直到2.4内核版本,它是“ .o”,从2.6开始,它是“ .ko”。


3

这似乎是一个古老的howto(教程),实际上它是在2005年编写的。当Linux内核为2.4.x时,模块的扩展名为.o,而在2.6中,模块的扩展名为.ko。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.