工作之余开始尝试了解linux。首先按照书上的例子写一个内核模块,hellomod。
但是并不如预料中的那么简单。
1,按照书上的内容编写的hellomod.c文件,成功。
2,编写Make文件,
-
ifneq ($(KERNELRELEASE),)
-
obj-m += hellomod.o
-
else
-
PWD := $(shell pwd)
-
default:
-
$(MAKE) -C /usr/src/linux-4.1.3 SUBDIRS=$(PWD) modules
-
@rm -rf *.mod.*
-
@rm -rf.*.cmd
-
@rm -rf *.o
-
@rm -rf Module.*
-
clean:
-
rm -rf *.ko
-
endif
3,之后在当前目录的命令行中输入~# make
4,报错了,错误是由于没有下载linux的源码导致
5,去网上下载了linux-4.1.3的源码,解压到/usr/src/linux-4.1.3中。虚拟机的内核版本是ubuntu 3.5.0-23-generic.
6,再进行编译,还是有错。原因是没有编译下载的linux-4.1.3导致缺少config文件,去源码根目录make一下,中端退出就可以,不然需要很长时间;
7,再回到hellomod目录下编译,提示缺少Module.symvers, 把原来/usr/src/linux-3.5.0-23-generic下的Module.symvers复制到linux-4.1.3中。再make oldconfig make prepare,make scripts
8,再进行编译,提示#MODULE LICENCE。搜索,去除前面的“#”,并将其改为MODULE_LICENSE;
9, 再进行编译,终于成功。
10, 装载模块,并查看。
学会跟编译器沟通,知道她想告诉你的信息。
阅读(1179) | 评论(0) | 转发(0) |