Linux内核编程入门hello,world!
2014-02-21 20:35
381 查看
kernel space中的程序入口,出口分别是module_init,module_exit中的handler,__init 宏是告知编译程序相关的程序或者变量仅用于初始化,会放到特殊的内存段中,初始化结束后就释放这段内存。在驱动程序中仅有一个module-init和cleanup_exit点。插入或移除模块后,可以通过dmesg看到相应的消息。hello_kernel.c:
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内核编程》
#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内核编程》
相关文章推荐
- Android入门—— Hello, world 解析
- SSM搭建-Maven安装与Maven HelloWorld入门实例(21)
- springmvc入门 hello,world
- [WebAssembly入门]二,Hello,World!
- 百度地图API入门——(2)第二个超简单应用:Hello, World!
- 添加内核模块之入门helloworld.ko
- DWR入门教程之HelloWorld
- 三、rabbitMQ helloWorld入门程序
- [Go语言]一、入门Hello,World
- Android网络开发框架Retrofit(二:入门篇,hello, world)
- Android 入门到精通(一) (Hello,Android World)
- rosserial_windows入门 对Hello World from Windows的调试
- Maven入门示例(2):调试helloworld webapp程序
- python爬虫"Hello World"级入门实例(二),使用json从中国天气网抓取数据
- 大白话解析Objective-C(一):入门 (Hello World + 第一个类)
- Bentley MicroStation 二次开发入门--"Hello World"
- iOS开发入门之“Hello,world!”
- Emacs 入门指引(四) Hello,World
- WCF Helloworld 入门教程
- Maven入门示例(2):调试helloworld webapp程序