Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5716
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2015-06-28 22:36
文章分类
文章存档

2015年(1)

我的朋友

分类: LINUX

2015-06-28 23:25:48

今天刚研究起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
再来编译问题便解决了。

本人还是菜鸟一只,如有错误之处,还望能指点,大家共同进步 
阅读(3535) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~