1、 到 http://oldlinux.org/Linux.old/bochs/ 下载 linux-0.11-rh9-041130.tar.gz(linux-0.11-rh9-041130.zip),解压如下:
2、根目录执行make命令,提示错误;这是由于缺少rpm包,无法识别as86命令,下载地址:http://oldlinux.org/Linux.old/study/tools/dev86-0.16.3-8.i386.rpm
3、执行make clean,再执行make,提示错误;这是由于函数声明不一致造成,打开include/unistd.h,在所示函数声明前加上static关键字
4、执行make clean,再执行make,提示错误;这个错误比较隐蔽,打开fs/exec.c,找到if (!(pag = (char *) page[p/PAGE_SIZE]) && !(pag = (char *)page[p/PAGE_SIZE] = (unsigned long *) get_free_page())) 给它添括号变成 if (!(pag = (char *) page[p/PAGE_SIZE]) && !(pag = (char *) (page[p/PAGE_SIZE] = (unsigned long *) get_free_page()))),记得还有一处类似错误,自己找一下,这是由于编译器的原因造成
5、执行make clean,再执行make,提示错误;打开include/string.h,extern inline char * strcpy(char * dest,const char *src)把extern关键字换成static
6、执行make clean,再执行make,提示错误;这个问题比较棘手,花费了我比较长的时间,打开tools/build.c,注释掉头文件#include <linux/fs.h>,把那两个宏直接拷贝过来
7、执行make clean,再执行make,成功!
8、总结,Linux-0.11内核非常古老,编译起来漏洞百出,加以耐心,肯定会有解决方案 |