模組的編寫 編譯 載入和解除安裝

2021-06-20 12:11:20 字數 996 閱讀 6486

以最簡單的hello world模組為例

1.編寫模組

//my_module.c

#include #include #include static int hello_init(void)

static void hello_exit(void)

module_init(hello_init);

module_exit(hello_exit);

module_license("gpl");

module_author("julian");

module_description("a hello, world module");

2.編寫makefile

obj-m := my_module.o

all:

make -c /usr/src/linux-3.11.1 subdirs=$(pwd) modules

clean:

make -c /usr/src/linux-3.11.1 subdirs=$(pwd) clean

3.編譯模組

$ make all

生成my_module.ko

4.載入模組

注:需要切換到超級使用者

# insmod my_module.ko

載入後通過命令dmesg檢視結果:

# dmsg

5.解除安裝模組

# rmmod my_module.ko

解除安裝後通過命令dmesg檢視結果:

# dmsg

可以看到模組已經被正確解除安裝了!

6.檢視正常工作的模組

7.刪除編譯後產生的檔案

$ make clean   

linux驅動模組的載入和解除安裝

linux 驅動有兩種執行方式,第一種就是將驅動編譯進 linux 核心中,這樣當 linux 核心啟動的時候就會自動執行驅動程式。第二種就是將驅動編譯成模組 linux 下模組擴充套件名為.ko 在linux 核心啟動以後使用 insmod 命令載入驅動模組。在除錯驅動的時候一般都選擇將其編譯為模...

模組(載入函式和解除安裝函式)

linux模組是一些 的整合,可以在啟動系統後動態鏈結到核心的一部分,一旦載入之後就和核心沒有什麼區別,可以使核心崩潰。當不需要這些模組時,又可以斷開鏈結將其刪除。linux的模組可以用c語言來編寫,用gcc來編譯生成目標檔案 不進行鏈結,作為 o檔案存在 為此需要在gcc命令裡加入 c的引數。由於...

核心模組的載入與解除安裝

1 核心原始碼存放的位置 usr src linux 或者 usr src kernel 2 核心模組存放的位置 lib modules uname r kernel 3 模組的依賴性 檢查 lib modules uname r modules.dep檔案,它記錄了核心支援模組的依賴關係。dep檔...