Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2424024
  • 博文数量: 392
  • 博客积分: 7040
  • 博客等级: 少将
  • 技术积分: 4138
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-17 13:03
个人简介

范德萨发而为

文章分类

全部博文(392)

文章存档

2017年(5)

2016年(19)

2015年(34)

2014年(14)

2013年(47)

2012年(40)

2011年(51)

2010年(137)

2009年(45)

分类:

2009-12-18 10:41:35

记录一下遇到的问题和解决办法:

我的编译环境:
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,可以顺利编译通过
阅读(1509) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~