是学到了于渊那本书的第9章,磁盘驱动那一部分吧,,print_identify_info函数里的char s[64]可能被gcc判别为做溢出攻击的恶意代码,把它挪到全局变量也可以解决(虽然不太雅观)。
我启用了-fno-stack-protector,ld又弹出来一句ld:-f may not be use without -shared,我加上了-shared,倒是链接成功,但链接出来的内核完全不能运行了。
你们把我的问题解决了,我也在看于渊的书,在第5章,编译h的时候出现这个错误,错误处在disp_int这个函数,在lib\klib.c中,在CFLAGS后面加上了-fno-stack-protector之后就好了,不用清楚以前的编译结果,因为make image = make final building , final= all clean = realclean everything.所以已经自动清除了.