第一步,編寫模組
#include
#include
module_license("gpl"); //許可許可權證明,gpl開源的協議
module_author("embedsky");//作者
module_description("hello world module");//描述
static int hello_init(void)
static void hello_exit(void)
module_init(hello_init); //載入函式
module_exit(hello_exit); //退出函式
~
第二步,編寫makefile檔案,紅色為可修改部分
ifneq ($(kernelrelease),)
obj-m :=hello.o // obj-m :=hello.o 編寫兩個以上使用的方法
// hello-objs := main.o add.o
else
kdir:= /lib/modules/3.16.0-23-generic/build //核心路徑,必須與系統一致,否則無法安裝
all:
make -c $(kdir) m=$(pwd) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
第三步,安裝與解除安裝
載入 insmod (insmod hello.ko)
解除安裝rmmod (rmmod hello)
檢視lsmod
載入modprobe (modprobe hello
)modprobe如同insmod,也是載入乙個模組到核心。
它的不同指出在於他會根據檔案 /lib/modules/<$version>/modules.dep來檢視要載入的模組,
modprobe會首先找到這些模組,把它們先載入到核心
核心編譯 模組編譯
目前是嵌入式 linux 的初學者感覺有所體會 1.從demo 學起 tiny 6410 上的開發,我的任務不斷是新增小模組。交叉編譯器,以及其它一系列 tool chains 可直使用產商提供的工具。避免過多細節的好處在於,你可以從整體處著手你從書本學到的理論知識。2.kernel 編譯其它很簡單...
核心模組的編譯
編譯核心模組的方法與編譯一般應用程式的方法略有不同.我們會發現在核心原始碼樹的層層目錄中,都存在有makefile.即這些makefile是分層次組織的.以往的核心版本中,編譯模組比較麻煩,需要我們對這些makefile做出許多更改.2.6的核心採用了 kbuild 編譯系統,簡化了這些問題.編譯之...
Linux核心模組編譯
data mining linux核心模組是一種可被動態載入和解除安裝的可執行程式。通過核心模組可以擴充套件核心功能,核心模組通常用於裝置驅動 檔案系統等。如果沒有核心模組,需要向核心新增功能就需要自發 重新編譯核心 安裝新核心等步驟。核心空間中不止乙個程式試圖訪問驅動程式模組,導致乙個核心塊在沒有...