我正在編寫簡單的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 = makeMeAnObjectPlease();和Object o = new Object();
- 3. .o目標文件和.so庫文件之間的區別是什麼?
- 4. * .php和* .html文件之間的區別
- 5. X3D和X3DV文件之間的區別
- 6. Blob和文件之間的區別
- 7. .html和.twig文件之間的區別
- 8. .SQL和.DUMP文件之間的區別
- 9. 識別普通文件夾和「。」/「..」文件夾之間的區別
- 10. 我想問這些KO綁定之間的區別是什麼
- 11. 矩形w(Origin(),Extents())和Rectangle w2(o,e)之間的區別
- 12. zsh和bash之間的I/O重定向區別
- 13. dllimport和w/o指示符之間的區別是什麼?
- 14. Java:流和I/O流之間的區別解釋
- 15. 之間的〜/和的區別../
- 16. 文本文件和ascii文件之間的任何區別?
- 17. cat文件的linenumbers之間的區別| nl和wc -l文件
- 18. rails中的助手文件和lib文件之間的區別
- 19. macOS上的「Python」文件和「python2.7」文件之間的區別
- 20. 在Ruby中的文件和::文件之間的區別?
- 21. '#','%'和'$'之間的區別
- 22. {!!之間的區別!!}和{{}}
- 23. '+ ='和'= +'之間的區別?
- 24. 「。+」和「。+?」之間的區別
- 25. .eq之間的區別。和==
- 26. #。/和#之間的區別。 ./
- 27. !=和!之間的區別==
- 28. 「%〜dp0」和「。\」之間的區別?
- 29. | =和^ = css之間的區別
- 30. 之間的區別。和#
我認爲.ko是2.6內核對象文件,而.o是2.4。在這裏閱讀更多關於它的信息:http://tldp.org/HOWTO/Module-HOWTO/linuxversions.html – smichak