内核编程 初探
来源:互联网 发布:手机怎么查自己淘宝id 编辑:程序博客网 时间:2024/06/10 03:47
发现需要使用内核编程,今天写了第一个内核编程的程序,纪念下.
centos
Linux localhost.localdomain 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
//hello.c
#include<linux/kernel.h>#include<linux/init.h>#include<linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int __init hello_init(void){ printk("Hello world\n"); return 0;}static void __exit hello_exit(void){ printk("Bye Corne\n");}module_init(hello_init);module_exit(hello_exit);
//Makefile
obj-m:=hello.oCURRENT_PATH :=$(shell pwd) VERSION_NUM :=$(shell uname -r)LINUX_PATH :=/usr/src/kernels/$(VERSION_NUM)all: make -C $(LINUX_PATH) M=$(CURRENT_PATH) modulesclean : make -C $(LINUX_PATH) M=$(CURRENT_PATH) clean
特别注意:
1.在 all 和 clean 下面的一行,即 make 之前必须用 Table 符隔开,不能用空 格隔开,否则编译错误 。
2.其中 -C 后指定的是 Linux 内核源代码的目录,而 M= 后指定的是 hello.c 和 Makefile 所在的目录
运行:
[jz@localhost code]$ l
hello.c Makefile
[jz@localhost code]$ make
make -C /usr/src/kernels/2.6.32-431.29.2.el6.x86_64 M=/home/jz/code modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-431.29.2.el6.x86_64'
CC [M] /home/jz/code/hello.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/jz/code/hello.mod.o
LD [M] /home/jz/code/hello.ko.unsigned
NO SIGN [M] /home/jz/code/hello.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.32-431.29.2.el6.x86_64'
[jz@localhost code]$ l
hello.c hello.ko.unsigned hello.mod.o Makefile Module.symvers
hello.ko hello.mod.c hello.o modules.order
[jz@localhost code]$ sudo insmod hello.ko
[jz@localhost code]$ sudo dmesg -c
Hello world
[jz@localhost code]$
参考博客:
http://blog.csdn.net/tigerjibo/article/details/6010997
- 内核编程 初探
- 内核编程学习(2)netfilter初探
- Linux内核编程初探:块设备驱动程序——Ramdisk
- 内核修改初探
- 初探linux内核
- Linux内核初探1
- Linux内核初探2
- Linux内核初探3
- Linux内核初探4
- Linux内核初探5
- 浏览器内核初探
- Zephyr微内核初探
- Windows Mobile智能手机今日插件编程开发初探(使用C++, vs2008, Pocket PC 5.0内核)
- linux设备驱动编程-初探(2)--在内核中构造和运行模块
- 初探linux内核编程,参数传递以及模块间函数调用
- 初探linux内核编程,参数传递以及模块间函数调用
- 初探linux内核编程,参数传递以及模块间函数调用
- 内核开发初探, 如何编译linux内核
- WPF TreeView Command
- 单选框和复选框组
- hdu 4451 Dressing(容斥原理)
- 什么是MVC模式
- (第二章)C++基本绘图
- 内核编程 初探
- Nginx的配置与部署(12)应用模块之Memcached做文件缓存时压缩引起的问题
- android 计算器
- Qt的图形图像打印
- Grid分组特性
- 关于C++头文件相互包含的问题(个人见解)
- C8_指针
- C9_指针
- 企业涉及到哪些税?