make[1]:正在离开目录 `/home/guang/temp/h/linux-0.11/lib'
kernel/kernel.o: In function `number':
/home/guang/temp/h/linux-0.11/kernel/vsprintf.c:92: undefined reference to `__stack_chk_fail'
fs/fs.o: In function `do_execve':
/home/guang/temp/h/linux-0.11/fs/exec.c:353: undefined reference to `__stack_chk_fail'
kernel/chr_drv/chr_drv.a(tty_ioctl.o): In function `tty_ioctl':
/home/guang/temp/h/linux-0.11/kernel/chr_drv/tty_ioctl.c:204: undefined reference to `__stack_chk_fail'
make: *** [tools/system] 错误 1
看网上说:加-fno-stack-protector选项,可惜ubuntu10.04自带的gcc版本是4.4,没有这个选项。
决定在虚拟机的ubuntu12.04试试。ubuntu 12.04上gcc有这个选项。
然后真的成功了,内核编译好了。
需要注意的有两点
1.linux-0.11所有目录下的makefile和Makefile的CFLAGS都要加上-fno-stack-protector选项
2.如果以前失败过一次,应该make clean.因为make不会只会编译变化了的文件(额,没说清,但是写过makefile应该懂)。
开始时还遇到一个错误,那是源代码linux-0.11-081030.tar.gz的错误。
86:#eli
87:#error
没有#error这个语法,将这两行注释掉就行。