- 论坛徽章:
- 0
|
这两天,主要是看一些linux内核的模块加载,基本上是按照ldd上面的说法做,几经折腾,算是将第一个程序hello.c用模块的方式加载成功。
由于我没有借到中文版的ldd这本书,我借了一本英文原版书籍,这可是对我的一个大的挑战,我英语确实是还没有达到能够将原版的书籍读懂的境界,但是现在就没有办法了,我去年四月份就试着看《uinx环境高级编程》的英文原版书,但是压力太大,又由于一些其他事情的干扰,一直就处于一种半明白状态,最后还是不得不放弃了。该看中文的,但是由于去年发生了太多没有想到的事,加上学习策略的失误。现在是感觉还没有达到预想的目标,一直拖到了现在。呵呵,说多了。现在我将如何编译好第一个模块程序的实例过程如下:
1.先按照ldd上面的描述将hello.c编译好。
2.编写Makefile,由于在2.6的内核中,Makefile的编写与2.4的有很大差别,ldd上面也没有很明确的Makefile。我也是参考了国内的一本linux实验教程而编写的。编写内容如下:
obj-m:=hello.o
all:
make -C /lib/modules/$(shell uname -r)/build \
M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build \
M=$(PWD) clean
具体的解释我也不多说了,在ldd这本书上已经有了描述。
3.在终端下运行/sbin/insmod hello.ko。就会在下面显示你所要想显示的东西了。呵呵。
4.在终端下卸载用命令/sbin/rmmod hello.ko。
总结,在这个整个过程中,我也算是成功了,但是还是有很多疑问,首先,这两个主要句子的含义我还是不太明白,基本上是照抄人家的。
第二,我想在Makefile里实现直接就用make install命令加载模块,但是没有成功。我看了一下内核的那个Makefile,但是我还是没有找到真正的路线。
第三,我对模块加载方面的具体流程和工作方式还是没有理解,还需要花时间来看和理解。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/60749/showart_1860649.html |
|