arch/i386/boot/boot.h: Assembler messages:
arch/i386/boot/boot.h:110: Error: bad register name `%dil'[/size]
make[1]: *** [arch/i386/boot/video.o] 错误 1
make: *** [bzImage] 错误 2
其实这个问题的出现,是因为我的系统里面有gcc 和gcc 4.4,前者版本为4.1,后来我修改了把gcc 4.4重命名为默认的gcc了,才会出这个问题,修改回去就好了。
如果一定要使用gcc 4.4也可以参考网上的修改方式:
arch/i386/boot/boot.h下,asm volatile("movb %%fs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr))这句;
这里没有寄存器dil... 准确来说这里是没有显式使用寄存器dil, 但是, 根据http://www.delorie.com/djgpp/doc/brennan/brennan_att_inline_djgpp.html的介绍, 这里的r表示从esi和edi中动态选择, 这里的dil就是从这里来的了. 解决方案, edi不好使, 咱就换一组, 换q就是了, q是在eax, ebx, ecx, edx中间挑一个, 改完搞定, 重新编译通过.