Nestor~Rush~

A man is not old until regrets take the place of dreams
段选择子与描述符的结构及其含义(一)(转)
堆排序

“__stack_chk_fail”错误

nestor posted @ 2011年9月20日 03:27 in os , 3087 阅读

 

今天在做Orange'S第六章时候,对a实验进行make,发生错误:
ld -s -Ttext 0x30400 -o kernel.bin kernel/kernel.o kernel/start.o kernel/i8259.o kernel/global.o kernel/protect.o lib/klib.o lib/kliba.o lib/string.o
lib/klib.o: In function `disp_int':
klib.c:(.text+0xe5): undefined reference to `__stack_chk_fail'
make: *** [kernel.bin] 错误 1
尝试了多种方法:
1.在Makefile的cflags后加入-fno-stack-protector
 
CFLAGS      = -I include/ -c -fno-builtin -fno-stack-protector

2.在Makefile的cflags后加入-nostdlib

CFLAGS      = -I include/ -c -fno-builtin -nostdlib

但是!%@……#&%*¥&%……#%@依旧错误....-_-#

问题不再Makefile,在于修改后,没有rm klib.o,make命令没有执行链接,所以还是出错!@#¥%%Z……&下面显示成功

问题解释的地址:http://forum.osdev.org/viewtopic.php?f=1&t=19434

nestor@nestor-Ideapad-Z460:~/oranges/chapter5/i$ rm -R -f *.o
nestor@nestor-Ideapad-Z460:~/oranges/chapter5/i$ make
nasm -I include/ -f elf -o kernel/kernel.o kernel/kernel.asm
gcc -I include/ -c -fno-stack-protector -fno-builtin 	 -o kernel/start.o kernel/start.c
gcc -I include/ -c -fno-stack-protector -fno-builtin 	 -o kernel/i8259.o kernel/i8259.c
gcc -I include/ -c -fno-stack-protector -fno-builtin 	 -o kernel/global.o kernel/global.c
gcc -I include/ -c -fno-stack-protector -fno-builtin 	 -o kernel/protect.o kernel/protect.c
ld -s -Ttext 0x30400 -o kernel.bin kernel/kernel.o kernel/start.o kernel/i8259.o kernel/global.o kernel/protect.o lib/klib.o lib/kliba.o lib/string.o
  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter