ldd3 读书笔记 —— Hello, world!
2010-11-13 00:57
344 查看
某程序员对书法十分感兴趣,退休后决定在这方面有所建树。于是花重金购买了上等的文房四宝,一番磨墨拟纸,并点上了上好的檀香,颇有王羲之风范,又具颜真卿气势,定神片刻,泼墨挥毫,郑重地写下一行字:
Hello, world!
ldd3的源代码可以从这里下载:http://oreilly.com/catalog/9780596005900/ 然后找“Download Example Code”
hello.c在misc-modules这个目录里面。不过我看书的习惯是把所有的代码都手工输入一次。
Makefile如下:
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
make的时候,Makefile会被执行两次:
第一次进入else,设置KERNELDIR和PWD,然后执行$(MAKE) -C的那一行,这次的make会先到内核源代码的根目录执行,然后再回来,这次就会执行到obj-m := hello.o了。
hello.c的代码:
#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, cruel world/n");
}
module_init(hello_init);
module_exit(hello_exit);
这个代码实在太简单了,没什么好说的。make之后,用modinfo可以查看hello.ko的信息。注意其中的vermagic,他记录了编译的内核的版本,如果运行的版本与此不一致,insmod的时候会失败。
用su切换到root,insmod/rmmod,用dmesg和lsmod可以看到效果。
Hello, world!
ldd3的源代码可以从这里下载:http://oreilly.com/catalog/9780596005900/ 然后找“Download Example Code”
hello.c在misc-modules这个目录里面。不过我看书的习惯是把所有的代码都手工输入一次。
Makefile如下:
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
make的时候,Makefile会被执行两次:
第一次进入else,设置KERNELDIR和PWD,然后执行$(MAKE) -C的那一行,这次的make会先到内核源代码的根目录执行,然后再回来,这次就会执行到obj-m := hello.o了。
hello.c的代码:
#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, cruel world/n");
}
module_init(hello_init);
module_exit(hello_exit);
这个代码实在太简单了,没什么好说的。make之后,用modinfo可以查看hello.ko的信息。注意其中的vermagic,他记录了编译的内核的版本,如果运行的版本与此不一致,insmod的时候会失败。
用su切换到root,insmod/rmmod,用dmesg和lsmod可以看到效果。
相关文章推荐
- 【java读书笔记】——java开篇宏观把控 + HelloWorld
- C++11 多线程编程《C++ Concurrency in Action》读书笔记(1)-Hello World of Concurrency in C++
- LDD3_No1.:Hello,World的问题
- 《30天自制操作系统》读书笔记(2)hello, world
- 【java读书笔记】——java开篇宏观把控 + HelloWorld
- 【java读书笔记】——java开篇宏观把控 + HelloWorld
- 【java读书笔记】——java开篇宏观把控 + HelloWorld
- [cocos2d-x]HelloWorldDemo
- 【1】Node.js Hello World! 发布静态网页
- Spring Batch -----Hello world!
- 黑马程序员 Hello World!
- java笔记一:有关java HelloWorld dos环境下运行出错
- 3、SSM框架-Spring第一个Spring HelloWorld(3)
- Helloworldbasic.rss 浅析
- 《QML HelloWorld》学习笔记
- Lua HelloWorld
- 1.第一个程序: "Hello, World"
- Swift Hello World、 注释、分号
- 一个面象对象的"hello world"程序
- 01:Hello, World!