Linux驅動開發HelloWorld
1、編寫原始碼及Makefile檔案
#include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "hello world!\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "goodbye!\n"); } module_init(hello_init); module_exit(hello_exit);
Makefile檔案內容如下:
#下面這行是檔案Makefile的內容,注意M是大寫的
obj-m := hello.o
2.編譯 把hello.c和Makefile儲存在同一目錄,然後執行:
make -C /lib/modules/$(uname -r)/build SUBDIRS=$PWD modules
這樣驅動就編譯好了,成果是hello.ko檔案。
注意:makefile一定要寫成Makefile,如果寫成makefile就編譯不過。
執行
sudo insmod ./hello.ko 在/var/log/syslog檔案中看到如下內容
執行sudo
lsmod命令,列出載入的驅動。發現hello驅動在其中。
5.另一種Makefile
#以下是Makefile檔案的內容
obj-m := hello.o
KERNEL_DIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
make -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules
clean:
rm *.o *.ko
然後執行:make就編譯成功了,命令列不再加引數,很省事。