这几天一直在编译linux内核,编译的内核是2.6.30.4的版本
我是的环境red hat linux9.0 内核版本是2.4.20-8 虚拟机是VM9.0的。
在编译的过程中出现了几个问题,在晚上经历千辛万苦找好几天才找到的解决的方法。
我遇到的问题如下:
问题1.
drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not properly converted to the DMA API
drivers/scsi/advansys.c: In function `advansys_get_sense_buffer_dma':
drivers/scsi/advansys.c:9885: error: implicit declaration of function `dma_cache_sync'
make[2]: *** [drivers/scsi/advansys.o] Error 1
make[1]: *** [drivers/scsi] Error 2
make: *** [drivers] Error 2
解决方法:
在/usr/src/linux-2.6.30.4/include/linux/dma-mapping.h的最后endif之前添加
static inline void
dma_cache_sync(struct device *dev,void *vaddr,size_t size,
enum dma_data_direction direction);
{
BUG();
}
这个问题解决了,我想大家都会遇见下面这个问题,我在这个问题花费了很久的时间,基本上没有解决的办法。
在坚持又坚持之下终于找到了方法。
问题2:
make[1]: *** No rule to make target `|', needed by `firmware/keyspan/usa19qi.fw.
gen.S'. Stop.
make: *** [firmware] Error 2 我觉得这个错误最悲催。
解决方法:在内核的目录下make menuconfig
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
编译通过!这个方法是我在一边博客上看到的。
博客地址是:http://blog.163.com/xueweilin123@126/blog/static/164918622201303010351771/
make zImage经过很长的时间之后会出现下面的,说明你的zImage就存在了。
Kernel: arch/arm/boot/zImage is ready