记录一下遇到的问题和解决办法:
我的编译环境:
kernel 2.6.28
gcc 4.3.3
as86 0.16.17
ld86 0.16.17
1.首先在oldlinux.org上下载一个rh9版本的源码,该源码可以在rh9上编译通过,具体是什么环境没有深究。我就直接拿来在我的机器上编译,会遇到不少问题,记录一下。
2.make报错:不认识as86和ld86命令。这个简单,sudo apt-get install as86解决,具体as86和系统自带的as有什么区别,待了解后在补充吧
3.GCC4.x 默认检查stack安全,会导致出现__stack_chk_fail错误,所以在编译之前应先修改Makefile:
linux-0.11/Makefile
linux-0.11/kernel/Makefile
linux-0.11/kernel/chr_dev/Makefile
linux-0.11/kernel/blk_dev/Makefile
linux-0.11/fs/Makefile
在 CFLAGS参数中加入-fno-stack-protector
4.在ld时报错:undefined reference to 'memcpy'。修改include/string.h中的memcpy定义,把static 改为 extern 即可。
5. build.c: undefined referenc to 'MAJOR' 'MINOR'。这个是我自己想的解决方法,能否使用还有待检验。不就是没有定义这两个宏吗,找到它们,在build.c文件里面加上就行了(源定义在include/linux/fs.h里面,把它搬过来),代码如下
/* build.c */
#ifndef MAJOR
#define MAJOR(a) (((unsigned)(a))>>8)
#endif
#ifndef MINOR
#define MINOR(a) ((a)&0xff)
#endif
OK,可以顺利编译通过
阅读(1548) | 评论(0) | 转发(0) |