1 源代码书写要保证正确,MODULE_LICENSE();是一条语句,后面要有分号;
2 static void hello_exit()的返回类型为void;
3 make M=`pwd` M参数后面不是单引号,而是斜点``;
4 -c 指定包含kernel顶级Makefile的源码目录;
5 源代码要执行make menuconfig生成默认配置,无须修改任何内容;
6 make menuconfig 的运行可能需要安装necurses-dev;
7 生成ko模块文件所使用的源码版本要和insmod的目标内核版本一致;
8 2.6个版本内核下载 ;
9 make编译可能提示没有modpost等脚本文件,可以从其它源码目录拷到当前使用源码目录下,或者利用当前源码目录下的c文件直接编译生成;
10 如果insmod过程中出错,可以使用dmesg | tail 命令查看系统日志
11 模块的编译和插入,对版本一致性要求很严格,如果编译依赖的内核源码版本和目标平台正在运行的内核版本不一致的话,很可能模块无法正常insert,出现诸如“-1 Invalid module format”或“no symbol version for module layout”的错误
所以编译过程中:
不是为正在运行的内核编译模块:
make -C M='pwd'
为正在运行的内核编译模块:
make -C /lib/modules/'uname -r'/build M='pwd'
即可以保证insmod无误;
阅读(3378) | 评论(0) | 转发(0) |