Linux驅動中的 o檔案與 ko檔案的區別

2021-05-23 22:33:04 字數 687 閱讀 7952

最近在學習linux的驅動,之前做嵌入式實驗的時候載入驅動模組都是.o檔案,但是現在發現很多驅動模組都是.ko檔案,於是上網查了一下兩者的區別,現在貼出來,和大家一起分享。

.o檔案也就是object檔案,.ko檔案是kernel object檔案,與.o的區別在於其多了一些sections,比如.modinfo。.modinfo section是由kernel source裡的modpost工具生成的,包括module_author, module_description, module_license, device id table以及模組依賴關係等等。depmod工具根據.modinfo section生成modules.dep, modules.*map等檔案,以便modprobe更方便的載入模組。

在2.6核心下編譯driver, 首先要確認你的linux系統裡有沒有kernel tree,檢查的方法是看看資料夾/lib/modules/$(uname -r)/build是否指向source code,並進去看看,是否有makefile, include, scripts等資料夾,在scripts/mod下可以找到前面提到的modpost,這個是生成.ko的關鍵。如果沒有kernel tree,需要重新build乙份kernel來建立這個kernel tree。

在2.4核心中,生成的就是.o檔案。

2.6的kernel對核心模組的管理做了一些擴充套件,生成的就是.ko檔案。

linux 下的 a 檔案 o 檔案 含義

o 就是object,也就相當於windows下編譯的obj檔案,俗稱目標檔案.a 就是archive,也就相當於windows的vc下編譯的lib檔案,俗稱靜態庫檔案.o檔案是鏈結檔案,a是靜態庫檔案,靠.o檔案生成,作為乙個庫為外部程式提供函式,介面。生成.o檔案 gcc c test.o te...

查詢驅動檔案ko 如何快速整理電腦中的大量檔案?

想象如下乙個場景 你剛入職一家新單位或者換了乙個新崗位,單位給你分配了一台別人留下的舊電腦 本文特指安裝了 windows 系統的電腦 硬碟的各個分割槽中散落著各種數不清的文件資料。你想把它們全都刪了,甚至直接把硬碟格式化,重灌系統,還自己乙個乾乾淨淨的 新 電腦,但又怕這些文件將來可能用得著,那該...

Linux驅動開發需要注意的點 KO大小 記憶體管理

因為做了大量除錯的工作,呵呵,所以對 質量要求比較高。1.不要想不通就寫 不要為了存粹的解決問題而加 不要忽視任何一種場景可能,因為躲得了一時,躲不了一波,bug遲早會被挖出來的,到時候更加苦逼。2.記憶體是個很嚴肅的問題,不要直接呼叫系統函式,最好把malloc kmalloc kzalloc v...