Linux内核编程入门hello,world!
生活随笔
收集整理的這篇文章主要介紹了
Linux内核编程入门hello,world!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ?kernel space中的程序入口,出口分別是module_init,module_exit中的handler,__init 宏是告知編譯程序相關的程序或者變量僅用于初始化,會放到特殊的內存段中,初始化結束后就釋放這段內存。在驅動程序中僅有一個module-init和cleanup_exit點。插入或移除模塊后,可以通過dmesg看到相應的消息。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的寫法(在內核的Makefile中定義了KERNELRELEASE,先執行內核代碼下面的Makefile,然后執行當前工作目錄的這個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
-------- 參考文獻:《linux內核編程》 ?
Makefile的寫法(在內核的Makefile中定義了KERNELRELEASE,先執行內核代碼下面的Makefile,然后執行當前工作目錄的這個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
-------- 參考文獻:《linux內核編程》 ?
總結
以上是生活随笔為你收集整理的Linux内核编程入门hello,world!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android中的 listview,A
- 下一篇: Linux表空间扩容,linux下ora