编译内核遇到错误的办法

  • 格式:doc
  • 大小:33.50 KB
  • 文档页数:2

我要编译的版本号是2.6.28.7
只修改了Makefile里的ARCH 和CROSS
1.ERROR:"__bad_udelay"[sound/pci/ali5451/snd-ali5451.ko]
2.
3.ERROR:"__bad_udelay"[drivers/video/savage/savagefb.ko]
4.
5.ERROR:"__bad_udelay"[drivers/scsi/atp870u.ko]
6.
7.ERROR:"__bad_udelay"[drivers/net/sungem.ko]
8.
9.ERROR:"__bad_udelay"[drivers/atm/he.ko]
10.
11.make[1]:***[__modpost]错误 1
12.
13.make:***[modules]错误 2
解决问题首先要确定问题,然后整理思路。

想一想,这些都是一些不认识的驱动啊,我们很可能不需要这些驱动的。

那么我们就去掉它们好了。

它们从哪里来?肯定是配置项选中了,也许是默认的吧。

那么我们可以去
make menuconfig来把他们去掉,但不熟悉的朋友肯定会很烦那堆配置菜单。

如果知道menuconfig的原理,我们可以知道各个子目录下的Makefile正是构成配置菜单的东西。

我们也可以找这些来改。

首先在内核源码根目录下用配置菜单搜索
make menuconfig
device drivers -->network device support-->enthernet (10 or 100Mbit)-->Sun GEM support选项去掉。

可以解决sungem.ko的错误。

其余用命令搜索
find -name "Makefile"|xargs grep "xxx"
xxx为上面报错的驱动模块名称,注意,不要搜snd-ali5451.ko,而是搜snd-ali5451.o
其实,出现这个问题,很多时候是我们没有先用一个默认配置,如:make smdk2410_config ,导致默认的配置菜单有些配置和实际源码有差别。

欢迎技术交流,邮箱noiplee@
这是noiplee的技术博客,我写博客的目的是想通过快速分享来达到掌握知识的目的,同时希望和各位网友交流共同进步。

如果您看了我的文章有任何的建议或者观点,非常欢迎留言和评论,有任何问题我们都可以一起探讨,我会及时回复的。