linux0.11内核编译,编译Linux-0.11内核

本文介绍了解决Linux-0.11内核编译时遇到的undefined reference to `__stack_chk_fail'错误的方法。通过在CFLAGS中添加-fno-stack-protector选项并进行make clean清理旧编译文件最终成功编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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这个语法,将这两行注释掉就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值