Fedora 14下构建Linux内核源码树

构建Linux内核源码树,真的是一个非常曲折的过程。

构建的缘由是:编译驱动,需要用到内核源码树。我记得之前在别的电脑上,直接用的Linux源代码,就可以编译驱动,这次用自己的电脑跟实验室的电脑都不行,编译会出错。错误信息为:没有规则可以创建目标。

于是,我就重新配置与编译内核。在此过程中,出现了各种问题。

首先,我make menuconfig,什么的不配置,全部是默认,然后保存。然后make编译,结果出错。(原来全部按默认配置内核,也会出错)


后来找到错因:

1、拷贝的内核源代码错误。在Windows下解压,然后通过samba拷贝到Fedora。这样不行,必须把压缩包拷到Fedora,然后在Fedora下,通过tar xvzf命令,将压缩包解压。

2、make时,命令中没用交叉编译器,必须要用交叉编译器才对,如:make uImage ARCH=arm CROSS_COMPILE=arm-linux-

更正了这两个错误之后,编译内核没有问题了。


接下来,编译和安装内核模块。

编译内核模块:make modules ARCH=arm CROSS_COMPILE=arm-linux-

结果又接二连三的出错,一个错误解决,又一个问题出现(出现3次左右之后,就想会不会一直这样错下去,有点想放弃了,还好最终还是坚持到成功了)。

编译内核模块,第一次出错为:



经查询,解决方法为:重新make menuconfig,将driver中的,输入设备->触摸设备中,EETI选项不选,然后保存退出,重新编译。

编译没问题。

第二次编译内核模块,依然出错:



出现了隐式声明错误,可能是.c中的函数,.h中没有声明。查询得知,可以将advansys.c中的dma_cache_sync函数注释掉,重新编译。

第三次编译内核模块,依然有错:



这次的解决方法为:在.config中的CONFIG_SCSI_OSD_INITIATOR=m,改成CONFIG_SCSI_OSD_INITIATOR=n

第四次编译,依然有错:



经查询,这些模块一般用不到,可以将这些模块都注释掉。可以在make menuconfig图形界面中,但找起来会比较麻烦,还有一种可以修改.config文件,但我还是没找到。于是我将每个模块对应的Makefile,Makefile中xx.o那一句注释掉,重新编译。这次终于可以成功了。

然后我安装内核模块,make modules_install ASCH=arm INATALL_MOD_PATH=/xx/rootfs,也没有错。

至此,内核源码树构建成功。可以在/lib/modules/下看到自己新建的Linux版本,我的是2.6.38。

内核源码树,构建成功!!!!


接下来,编译驱动,驱动中的Makefile,KERNELDIR :=/lib/modules/2.6.38,此时出现的错误是:没有规则可以创建目标modules,于是修改Makefile,路径改为/lib/modules/2.6.38/build,结果依旧出错:


这个问题,目前还没有解决,先去吃饭。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值