Linux内核编程入门hello,world!
生活随笔
收集整理的這篇文章主要介紹了
Linux内核编程入门hello,world!
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ?kernel space中的程序入口,出口分別是module_init,module_exit中的handler,__init 宏是告知編譯程序相關(guān)的程序或者變量?jī)H用于初始化,會(huì)放到特殊的內(nèi)存段中,初始化結(jié)束后就釋放這段內(nèi)存。在驅(qū)動(dòng)程序中僅有一個(gè)module-init和cleanup_exit點(diǎn)。插入或移除模塊后,可以通過(guò)dmesg看到相應(yīng)的消息。hello_kernel.c:
#include<linux/kernel.h>
#include<linux/module.h>
#include<linux/init.h>static int __init lkp_init(void)
{printk(" <1> hello ,world..\n");return 0;
}static void __exit lkp_cleanup(void)
{printk("<2> goodbye, leaving kernel space...\n");
}module_init(lkp_init);
module_exit(lkp_cleanup);
Makefile的寫法(在內(nèi)核的Makefile中定義了KERNELRELEASE,先執(zhí)行內(nèi)核代碼下面的Makefile,然后執(zhí)行當(dāng)前工作目錄的這個(gè)Makefile): ifneq ($(KERNELRELEASE),)
mymodule-objs:=hello.c
obj-m += hello.o
else
??????? PWD := $(shell pwd)
??????? KVER := $(shell uname -r)
??????? KDIR := /lib/modules/$(KVER)/build
all:
??????? $(MAKE) -C $(KDIR) M=$(PWD)
clean:
??????? rm -rf *.o *.mod.c *.ko *.mod.o *.symvers *.order *-
endif
-------- 參考文獻(xiàn):《linux內(nèi)核編程》 ?
Makefile的寫法(在內(nèi)核的Makefile中定義了KERNELRELEASE,先執(zhí)行內(nèi)核代碼下面的Makefile,然后執(zhí)行當(dāng)前工作目錄的這個(gè)Makefile): ifneq ($(KERNELRELEASE),)
mymodule-objs:=hello.c
obj-m += hello.o
else
??????? PWD := $(shell pwd)
??????? KVER := $(shell uname -r)
??????? KDIR := /lib/modules/$(KVER)/build
all:
??????? $(MAKE) -C $(KDIR) M=$(PWD)
clean:
??????? rm -rf *.o *.mod.c *.ko *.mod.o *.symvers *.order *-
endif
-------- 參考文獻(xiàn):《linux內(nèi)核編程》 ?
總結(jié)
以上是生活随笔為你收集整理的Linux内核编程入门hello,world!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android中的 listview,A
- 下一篇: Linux表空间扩容,linux下ora