Linux module 程式設計
開啟Linux terminal(CTRL + ALT + T).
建立一個module 目錄(directory):
makdir modules
這樣我們建立了一個名為modules 的目錄。
切換到該目錄下:
cd modules
這樣我們當前的工作空間就在這個modules目錄下。
我們使用ls 指令檢視該目錄下面的檔案。 當然此時是空的
ls
此時建立檔案hello.c, 如下:
vim hello.c
此時目錄modules 下面就有了一個hello.c 檔案。 此時編輯該檔案內容如下:
#include <linux/init.h>
#include <linux/module.h>
stactic void hello_init(void) {
printk(KERN_ALERT "Test:: Hello world \n")
return 0;
}
static void hello_exit(void) {
printk(KERN_ALERT "Test:: Good bye");
}
module_init(hello_init);
module_exit(hello_exit);
:wq儲存, 回到terminal。
上述程式的分析,。
#include <linux/init.h> 這個包含標頭檔案用於對Linux module初始化的, 同時當執行結束的時候, 釋放記憶體用的。
#include <linux/module.h> 這個包含標頭檔案用於識別這是一個module。 所有的模組都有這個標頭檔案, 必須包含進來。
注意所有的函式必須是static, 因為我們只希望擁有一份(ONLY one instance)這個函式的記憶體。 不管呼叫多少次 , 都只有一個。
Linux module程式設計的時候, 我們不可以使用c語言的標準庫。 例如列印應printk() 函式。 輸出到log file 中區。
函式module_init()和cleanup_exit()是模組程式設計中最基本也是必須的兩個函式。
module_init()向核心註冊模組所提供的新功能,
而cleanup_exit()登出由模組提供的所有功能。
現在我們需要將上述的原始檔編譯成一個module。 下面我們製作makefie, 方法如下:
vim makefile
忽略如何製作。
編寫完makefile 之後, 儲存, 返回到terminal。 可以用ls 檢視此時modules中有三個檔案。
接下來, 直接輸入指令:
make
即可完成對模組的編譯工作。
接下來, 將module插入到kernel中的指令如下:
insmod hello.ko
接下來: display message.
dmsg
會顯示Test:: Hello world。
接下來, 我們從kernel 中刪除module, 指令如下:
rmmod hello.ko
顯示的資訊為:
Test:: Good bye相關文章
- JavaScript 模組化程式設計 - Module PatternJavaScript程式設計
- Linux程式設計Linux程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- Java9系列第8篇-Module模組化程式設計Java程式設計
- Linux Bash程式設計Linux程式設計
- Linux jpeg程式設計Linux程式設計
- linux shell 程式設計Linux程式設計
- linux Socket 程式設計Linux程式設計
- linux shell程式設計Linux程式設計
- Linux程式控制程式設計Linux程式設計
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- linux下bluetooth程式設計(三)HCI層程式設計Linux程式設計
- linux下bluetooth程式設計(八)SDP層程式設計Linux程式設計
- Linux module(Linux 模組)Linux
- 【Linux】 Linux網路程式設計Linux程式設計
- 翻譯:《實用的Python程式設計》03_05_Main_modulePython程式設計AI
- Linux之shell程式設計Linux程式設計
- Linux串列埠程式設計Linux串列埠程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- [Linux C]CGI程式設計Linux程式設計
- Linux檔案程式設計Linux程式設計
- linux程式設計基礎Linux程式設計
- Linux 串列埠程式設計Linux串列埠程式設計
- 讀《Linux核心程式設計》Linux程式設計
- Linux核心程式設計(阻塞程式)(轉)Linux程式設計
- (整合)Linux下的多程式程式設計Linux程式設計
- Linux Shell程式設計(28)——程式替換Linux程式設計
- Linux核心模組程式設計--阻塞程式(轉)Linux程式設計
- Linux網路程式設計(1)Linux程式設計
- Linux網路程式設計(2)Linux程式設計
- Linux程式設計之gdb(二)Linux程式設計
- Linux 伺服器程式設計Linux伺服器程式設計
- Linux Socket 程式設計簡介Linux程式設計
- linux c 網路程式設計Linux程式設計
- Linux網路程式設計1Linux程式設計
- linux音訊程式設計指南Linux音訊程式設計
- linux下的SHELL程式設計Linux程式設計