今天刚研究起linux驱动模块,遇到不少问题,此类问题网上也有不少解决方法,自己发出来也供各位朋友参考。

首先,为了能在2.6.x版本内核下成功编译模块,最好能将已经安装好的linux重新编译一次:

不重新编译的话,当你编译内核模块的时候,可能会出现makefile文件和程序源码是没问题的,

但却编译不出modules的问题。   MODPOST  0  modules  就是这个。

所以还是重新编译一次吧

cd  /usr/src/kernel/$(uname -r)

make  mrproper    清除一些以前遗留的文件,获得清爽的源代码

make  menuconfig    命令行模式下的图形内核配置方式(make config(古老的交互式)   make xconfig(K桌面)  make  gconfig(G桌面))

make  bzImage    编译内核镜像,编译完之后,留心最后的显示内容(他就在那里)

make  modules    内核模块的编译(最耗时间了)

因为是编译安装好的系统的源码,所以不用去重新去配置/boot目录下的config文件和/boot/grub/menu.lst

当重新开机的时候,会重装一次内核(原来的分区不会重新分配)

Linux设备驱动程序里的那些源码,很适合拿来学习,我也是用这个开始学习模块编译的。

不过遇到一个问题,在编译一些 *.c 源文件时,有事会发生缺少“linux/config.h”的错误,自己网上找答案,

说是现在内核源码里面没有config.h文件了,成了autoconfig.h 。需要将后者软链接为config.h,就可以了。

我自己试过之后,可能是和那位仁兄的版本也不一样,在内核源码里还是没find到config.h,却发现了kconfig.h

,查看多处源码,发现此文件在不少目录里面出现,索性ln  -s  kconfig.h  config.h

再来编译问题便解决了。

本人还是菜鸟一只,如有错误之处,还望能指点,大家共同进步

阅读(2070) | 评论(0) | 转发(0) |

0

上一篇:没有了

下一篇:没有了

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐