最近需要開發(fā)一些內(nèi)核模塊,進(jìn)行探究linux內(nèi)核的一些特征,現(xiàn)在把一些遇到的比較好的文章和知識點,進(jìn)行簡要記錄和備忘;
內(nèi)核模塊開發(fā)相關(guān)鏈接:
內(nèi)核模塊開發(fā)過程遇到的知識點:
最簡單的內(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"); } //模塊的注冊 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)載請注明出處;更多內(nèi)容請關(guān)注cnblogs.com/xuyaowen; 如果對您有幫助,請點擊推薦~!
聯(lián)系客服