>
> I'm trying to compile the project0 as shown below, but the linker fails
> with
> this message:
>
> ld -o geekos/kernel.exe -Ttext 0x00010000 -e Main \
> geekos/idt.o geekos/int.o geekos/trap.o geekos/irq.o
> geekos/io.o geekos/keyboard.o geekos/screen.o geekos/timer.o geekos/mem.o
> geekos/crc32.o geekos/gdt.o geekos/tss.o geekos/segment.o geekos/bget.o
> geekos/malloc.o geekos/synch.o geekos/kthread.o geekos/main.o
> geekos/lowlevel.o common/fmtout.o common/string.o common/memmove.o
> common/fmtout.o: In function `Format_Output':
> fmtout.c:(.text+0x896): undefined reference to `__stack_chk_fail'
> make: *** [geekos/kernel.exe] Error 1
>
> I'm currently running Ubuntu Edgy with NASM version 0.98.38, GNU ld
> version
> 2.17 and gcc version 4.1.2 20060928 and not to mention version 0.3 of
> GeekOS. I can't find a reference to the function anywhere in the project0
> code, nor when I egrep through all the project directories. Any clues?
I just successfully compiled GeekOS on Edgy i386 with GCC 4.1. I
accomplished this by changing line 149 in the Makefile like so:
old: CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror
new: CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror -fno-stack-protector
>From a vanilla Edgy i386 install, I also had to load:
nasm
bochs
bochs-x
build-essential
I have believe a better fix for this would be sensing the version of GCC,
and including the switch if the version is high enough - I believe all the
stack protector stuff started being available with GCC 4. I'll probably
work on a script tonight.
|