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相關文章
- 【Linux】 Linux網路程式設計Linux程式設計
- Linux jpeg程式設計Linux程式設計
- Linux Bash程式設計Linux程式設計
- Linux串列埠程式設計Linux串列埠程式設計
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- 【Linux】Linux系統程式設計入門Linux程式設計
- Java9系列第8篇-Module模組化程式設計Java程式設計
- 翻譯:《實用的Python程式設計》03_05_Main_modulePython程式設計AI
- 【Linux網路程式設計】網路程式設計常見概念Linux程式設計
- Linux網路程式設計(2)Linux程式設計
- Linux網路程式設計(1)Linux程式設計
- Linux程式設計之gdb(二)Linux程式設計
- Linux 伺服器程式設計Linux伺服器程式設計
- (整合)Linux下的多程式程式設計Linux程式設計
- Linux 高效能伺服器程式設計- Linux 網路程式設計基礎 APILinux伺服器程式設計API
- 【Linux系統程式設計】Linux訊號列表Linux程式設計
- Linux系統程式設計之程式介紹Linux程式設計
- linux下使用makefile方式程式設計主程式Linux程式設計
- linux程式全解-3.4.linux應用程式設計和網路程式設計第4部分Linux程式設計
- Linux系統程式設計—有名管道Linux程式設計
- Linux中Libevent程式設計介紹Linux程式設計
- Linux系統程式設計基礎Linux程式設計
- Linux入門---(三)Shell程式設計Linux程式設計
- 前端學習 linux —— shell 程式設計前端Linux程式設計
- Linux系統程式設計入門Linux程式設計
- Linux系統程式設計——特殊程式之孤兒程式Linux程式設計
- 【Linux】關於Linux的系統程式設計總結Linux程式設計
- Linux網路程式設計之IO模型Linux程式設計模型
- Linux系統程式設計:mmap使用技巧Linux程式設計
- Linux系統程式設計:訊號捕捉Linux程式設計
- 【Linux網路程式設計】位元組序Linux程式設計
- 【Linux網路程式設計-1】訊號Linux程式設計
- 【Linux網路程式設計-3】多程序Linux程式設計
- Linux系統程式設計之匿名管道Linux程式設計
- Linux系統程式設計—訊號捕捉Linux程式設計
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計
- Linux系統程式設計-檔案IOLinux程式設計