linux内核编译步骤及遇到的问题(整理)

硬件平台:FL2440

交叉编译工具:3.4.1(飞凌的开发板好像只用3.4.1和)

    首先下载打开光盘资料找到2440-linux-2.6.28.tar,把它拷贝到samba服务器上解压缩为linux-2.6.28.7(注意直接在samba服务器上解压缩,就避免了内核文件修改权限)然后打开终端进入linux-2.6.28.7直接运行menuconfig ,进入配置界面,这里是别人配置好的。不需要配置,直接make zImage。就可以直接生成zImage可执行文件下载到开发板运行就可以了。

    如果是从网上下载的源码,就需要自己进行修改和配置内核文件具体:步骤如下:

Linux-2.6.31.tar.bz2(在光盘资料/源码包/kernel源码目录下) 
解压源码,进入目录 
 
修改 Makefile:  183行: 
ARCH ?= arm 
CROSS_COMPILE ?= arm-linux- (注意这里也可以直接交叉编译器的绝对路径)
 
修改时钟: 
修改arch/arm/mach-s3c2440/mach-smdk2440.c        163行 
static void __init smdk2440_map_io(void) 

s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); 
s3c24xx_init_clocks(12000000);     
s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs)); 

这个一定要设置对,否则会打印出乱码。 
 
修改机器码(根据实际情况,这个要和bootloader的匹配): 
修改:arch/arm/tools/mach-types   379行: 
s3c2440  ………………………     XXX    后面那个数就是机器码 
 
配置: 
#make menuconfig 
在System Type选单下,s3c24XX Machine那部分,只选中 
SMDK2410/A9M2410 
SMDK2440 
SMDK2440 with S3C2440 cpu moudle 

编译过程中遇到了一下三个错误:

1,、编译2.6.2.87版本Linux,采用s3c2440的ARM,按照步骤一步一步编译完成后,当执行make zImage后出现了三个错误,错误如下:

     (1)make[3]: *** [drivers/video/console/vgacon.o]  Error 1
              make[2]: *** [drivers/video/console] Error 2
              make[1]: *** [drivers/video] Error 2
              make: *** [drivers] Error 2

可以看出是device中的vga方面出现问题了,于是在网上找原因,发现很多人都出现了这个问题,于是按照网上DX们的指点,修改了Linux配置:

 Device Drivers
     ---->Graphics support
            ----->Console display driver support
                     ----->VGA text Console (这个选项不选就能解决此问题)

保存退出后,执行
     make clean
     make zImage

     


(2)make[1]: *** No rule to make target `|', needed by `firmware/keyspan/usa19qi.fw.gen.S'. Stop

          make: *** [firmware] Error 2

我看不出来这个问题的根源所在,网上的DX们也说不出什么,困惑了我好几天,结果在一个论坛(忘了是哪个论坛了)的帖子上解决了这个问题,同样是修改Linux配置:
Device Drivers
     ---->Generic Driver Options
            ---->Include in-kernel firmware blobs in kernel binary
                   External firmware blobs to build into the kernel binary(取消这两个选项)

     保存退出后,再执行

     make clean
     make zImage


 (3)include/asm is a directory but a symlink was expected


     解决方法:


             删除源码根目录下的include/asm,文件夹,问题解决。


分析原因:linux/include/asm 文件夹是内核编译过程中创建的,创建结果就是一个指向文件夹asm-arm的链接,表明该系统的平台是arm架构的,而编译系统内核之前,是没有asm这个链接的,所以,在编译过程中,创建该链接时文件名字与asm文件夹的名字发生冲突,报错了。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值