北航linux内核编译及烧录实验报告,编译内核成功(转-步骤值得学习)

内核编译成功,现在分享一下成功的喜悦以及坎坷的经历。

需要写一个驱动,由于开发板上烧录的是买时带着的镜像,无法在PC上搭建编译内核模块的环境,因为没有开发板的内核信息。于是我开始想自己编译内核。首先迅速搭建arm-linux-环境,我开始用的是crosstools_3.4.5_softfloat。

接下来配置环境变量,

$sudo gedit /etc/profile

在最后添加一行,

export PATH=$PATH:/usr/local/arm-linux/4.3.3/bin/:保存退出

输入$arm-(tab)  出现arm-linux链

环境搭建成功

再次解压内核我的内核版本是linux-2.6.30.4

开始内核编译,首先$make menuconfig

出错:很失败,之前的错误原因忘了记录。只能凭着回忆了。解决方法是安装libncurses5-dev

接着make bzlmage

出错:

kernel/built-in.o(.text+0x7340): In function `sched_create_group':

kernel/sched.c:9406: undefined reference to `.L3576'

make: *** [.tmp_vmlinux1] 错误 1

找了大量资料没有找出个所以然来,把编译器换成4.4.3后解决问题。

在make modules中出现一下错误:

CC [M]  drivers/media/video/em28xx/em28xx-audio.o

drivers/media/video/em28xx/em28xx-audio.c: In function 'em28xx_audio_init':

drivers/media/video/em28xx/em28xx-audio.c:466: error: implicit declaration of function 'snd_card_create'

make[4]: *** [drivers/media/video/em28xx/em28xx-audio.o] 错误 1

make[3]: *** [drivers/media/video/em28xx] 错误 2

make[2]: *** [drivers/media/video] 错误 2

make[1]: *** [drivers/media] 错误 2

make: *** [drivers] 错误 2

解决方法:在make menuconfig时去掉em28xx

net/ipv4/netfilter/ipt_ecn.c:99: error: 'IPT_ECN_OP_MATCH_CWR' undeclared (first use in this function)

net/ipv4/netfilter/ipt_ecn.c: At top level:

net/ipv4/netfilter/ipt_ecn.c:113: error: invalid application of 'sizeof' to incomplete type 'struct ipt_ecn_info'

make[3]: *** [net/ipv4/netfilter/ipt_ecn.o] 错误 1

make[2]: *** [net/ipv4/netfilter] 错误 2

make[1]: *** [net/ipv4] 错误 2

make: *** [net] 错误 2

解决方法:在make menuconfig中精简network support

uid-22477616-id-1773795.html

ERROR: "ioport_map" [drivers/net/wireless/orinoco/spectrum_cs.ko] undefined!

ERROR: "ioport_unmap" [drivers/net/wireless/orinoco/spectrum_cs.ko] undefined!

ERROR: "ioport_map" [drivers/net/wireless/orinoco/orinoco_cs.ko] undefined!

ERROR: "ioport_unmap" [drivers/net/wireless/orinoco/orinoco_cs.ko] undefined!

ERROR: "ioport_unmap" [drivers/net/wireless/libertas/libertas_cs.ko] undefined!

ERROR: "ioport_map" [drivers/net/wireless/libertas/libertas_cs.ko] undefined!

ERROR: "__bad_udelay" [drivers/isdn/hisax/hisax.ko] undefined!

ERROR: "ioport_map" [drivers/char/tpm/tpm_atmel.ko] undefined!

make[1]: *** [__modpost] 错误 1

make: *** [modules] 错误 2

解决方法:1修改wireless配置2去掉tmp支持

在make modules install中权限出现问题,开始还以为,/lib/modules/2.6.30.4是相对路径在源码文件夹下,狂汗,犯这种低级错误,结果chmod 777后 怎么也找不到出错原因。后来在makefile中找到_modinst_

添加一句@echo "ln -s $(srctree) $(MODLIB)/build"才了解,驱动真正的去向。

末了说一句编译内核是一个体力活。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值