我正在编写简单的Linux模块mod.c. 当我编译mod.c文件时,它会创建两个输出文件mod.o和mod.ko。 所以我只想知道, mod.o和mod.ko文件有什么区别?.o和.ko文件之间的区别
38
A
回答
34
简短的回答是,.ko文件是你的目标文件链接到一些内核自动生成的内核所需要的数据结构。
.o file是你的模块的目标文件 - 编译你的C文件的结果。然后,内核构建系统会自动创建另一个包含描述内核模块(名为your_module_kmod.c)的数据结构的C文件,将该C文件编译为另一个对象文件,并将您的对象文件与其构建的对象文件链接在一起以创建。 ko文件。
在负责装载内核模块内核中的动态链接程序,希望能够找到数据结构中的核心放在KMOD对象在.ko文件,将无法加载内核模块,而不他们。
12
的Linux 2.6之前,用户空间程序会解释ELF对象 (的.o)文件,然后执行它链接到正在运行的内核, 产生成品的二值图像的所有工作。该程序会将该图像 传递给内核,内核只会将其粘贴在内存中。在Linux 2.6中,内核执行链接。用户空间 程序将ELF对象文件的内容直接传递给内核 。为此,ELF对象图像必须包含其他 信息。为了识别这种特定种类的ELF目标文件,我们 命名带有后缀“.ko”(“内核对象”)而不是“.o”的文件。例如,对于 例如,Linux 2.4中的串行设备驱动程序位于文件 Linux 2.6中的serial.o存在于serial.ko文件中。
相关问题
- 1. I/O端口和I/O内存之间的区别
- 2. .o目标文件和.so库文件之间的区别是什么?
- 3. X3D和X3DV文件之间的区别
- 4. Blob和文件之间的区别
- 5. 矩形w(Origin(),Extents())和Rectangle w2(o,e)之间的区别
- 6. Java:流和I/O流之间的区别解释
- 7. 文本文件和ascii文件之间的任何区别?
- 8. macOS上的“Python”文件和“python2.7”文件之间的区别
- 9. rails中的助手文件和lib文件之间的区别
- 10. cat文件的linenumbers之间的区别| nl和wc -l文件
- 11. '+ ='和'= +'之间的区别?
- 12. #。/和#之间的区别。 ./
- 13. {!!之间的区别!!}和{{}}
- 14. ==和case之间的区别?
- 15. 之间的区别。和#
- 16. '#','%'和'$'之间的区别
- 17. | =和^ = css之间的区别
- 18. “%〜dp0”和“。\”之间的区别?
- 19. .eq之间的区别。和==
- 20. ==和.equals()之间的区别?
- 21. `%in%`和`==`之间的区别
- 22. OnClick()事件和OnClickListener之间的区别?
- 23. LinkLabel.Click和LinkLabel.LinkClicked事件之间的区别?
- 24. 事件和方法之间的区别
- 25. Bootstrap CSS和组件之间的区别
- 26. JSF:ViewActions和preRender事件之间的区别
- 27. AB Initio中串行文件和多文件之间的区别
- 28. HDF5文件和PyTables文件之间的区别
- 29. .msg文件和.eml文件之间的区别
- 30. .edmx文件和创建Entities.cs文件之间的区别
我认为.ko是2.6内核对象文件,而.o是2.4。在这里阅读更多关于它的信息:http://tldp.org/HOWTO/Module-HOWTO/linuxversions.html – smichak