|
最近需要開(kāi)發(fā)一些內(nèi)核模塊,進(jìn)行探究linux內(nèi)核的一些特征,現(xiàn)在把一些遇到的比較好的文章和知識(shí)點(diǎn),進(jìn)行簡(jiǎn)要記錄和備忘; 內(nèi)核模塊開(kāi)發(fā)相關(guān)鏈接:
內(nèi)核模塊開(kāi)發(fā)過(guò)程遇到的知識(shí)點(diǎn):
最簡(jiǎn)單的內(nèi)核模塊編譯示例:
//必要的頭文件 #include <linux/module.h> // included for all kernel modules #include <linux/kernel.h> // include for KERN_INFO #include <linux/init.h> // include for __init and __exit macros //模塊許可證聲明(必須) MODULE_LICENSE("Dual BSD/GPL"); // 通常使用BSD 和 GPL 雙協(xié)議 //聲明模塊的作者(可選) MODULE_AUTHOR("Yaowen Xu"); MODULE_AUTHOR("YaoXu"); MODULE_DESCRIPTION("This is a simple example!"); MODULE_ALIAS("A simplest example"); //模塊加載函數(shù)(必須) static int hello_init(void) { printk(KERN_ALERT "Hello World enter/n"); return 0; } //模塊卸載函數(shù)(必須) static void hello_exit(void) { printk(KERN_ALERT "Hello World exit/n"); } //模塊的注冊(cè) module_init(hello_init); module_exit(hello_exit);
obj-m += hello_mod.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 編譯前需要安裝必要編譯工具和所需要的文件: apt-get install build-essential linux-headers-$(uname -r) 保持更新,轉(zhuǎn)載請(qǐng)注明出處;更多內(nèi)容請(qǐng)關(guān)注cnblogs.com/xuyaowen; 如果對(duì)您有幫助,請(qǐng)點(diǎn)擊推薦~! |
|
|