以下面的字符設備源碼爲例:(當然用戶也可以使用helloworld的源碼):
把文件放在:
\home\ellison\linuxdev\demo_chrdev
1. 編寫Makefile文件,放在同樣的目錄:
在該Makefile中,指定了使用內核的版本:
KERNELDIR:=/lib/modules/$(shell uname -r)/build
建議這麼寫,避免編譯出來的.ko模塊與系統自帶的內核版本不匹配而報錯;
PWD:=$(shell pwd): 表示編譯後回到當前目錄;
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules 這一句就是我們真正的編譯指令;
2. 編譯:
在終端中,尋址到文件所在的目錄,輸入 make ,程序就會自動編譯了;
編譯後會生成對應的.ko文件;
3. 安裝模塊
4. 查看模塊是否安裝成功:
4. 查看安裝過程中打印出來的信息:dmesg|tail
5. 把模塊加入到設備系統的/dev目錄下(即生成一個新的設備節點):設備名- demo_chrdev
接下來在/dev目錄下可以看到這個設備節點: demo_chrdev
6. 編寫程序測試這個模塊:
編譯:
運行:
可以看到程序正確運行了。
這裏演示的是一個簡單的字符設備驅動程序,大家可以按照這個流程試試別的。