Ubuntu 10.10构建内核树(3)

需要注意的是makefile的格式$(MAKE)前面要加个tab.
make 编译,不出现错误的话,用ls -al查看linux_modules目录下产生了如下文件:
hello.c   hello.mod.c  hello.o   modules.order
hello.ko  hello.mod.o  Makefile  Module.symvers

其中hello.ko就是可加载的模块文件

现在我们就可以将编译好的模块helloworld加载到内核中去了

#insmod ./hello.ko   //这个命令把hello.ko加载到内核

#lsmod|grep hello   //lsmod 这个命令可以查看当前所有的驱动模块,结果应该显示hello 680 0

#rmmod hello         //这个命令是把hello这个模块移除掉

程序的输出结果可以在(printk 不会输出到终端)

dmesg |grep world
或是/var/log/syslog文件中查看

Hello,World
Goodbye,cruel world

这是程序的输出。

如果在输入insmod ./hello.ko时出现如下错误提示:insmod: error inserting 'hello.ko': -1 Invalid module format

则是因为记载版本号的字符串和当前正在运行的内核模块的不一样,这个版本印戳作为一个静态的字符串存在于内核模块中,叫vermagic,可以从编译模块中间生成的文件helloworld.moc.h中,如果出现这种情况:

1,根据modinfo hello.ko命令查看vermagic的值
2,根据uname -r查看内核版本
3,对比上边两步的值是否相同
若相同,我就不知道了
若不同,采用make -C /lib/modules/此处为你内核版本号对应的文件夹/build M=你模块源码的路径 modules

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxjxw.html