linker cannot access definitions in interrupts.asm
The linker cannot find the definitions of the isrs from the assembly file, inturrupts.asm.
C:\Users\Administrator\Documents\os\src>i686-elf-gcc -ffreestanding -c kernel/kernel.c -o bin/kernel.o i686-elf-gcc: error: drivers/ports.c: No such file or directory i686-elf-gcc: error: drivers/screen.c: No such file or directory C:\Users\Administrator\Documents\os\src>nasm boot/kernel_entry.asm -f elf -o bin/kernel_entry.o C:\Users\Administrator\Documents\os\src>i686-elf-ld -o bin/kernel.bin -Ttext 0x1000 bin/kernel_entry.o bin/kernel.o --oformat binary i686-elf-ld: warning: cannot find entry symbol _start; defaulting to 00001000 bin/kernel.o: In function
isr_install': kernel.c:(.text+0x598): undefined reference toisr0' kernel.c:(.text+0x5a8): undefined reference toisr1' kernel.c:(.text+0x5b8): undefined reference toisr2' kernel.c:(.text+0x5c8): undefined reference toisr3' kernel.c:(.text+0x5d8): undefined reference toisr4' kernel.c:(.text+0x5e8): undefined reference toisr5' kernel.c:(.text+0x5f8): undefined reference toisr6' kernel.c:(.text+0x608): undefined reference toisr7' kernel.c:(.text+0x618): undefined reference toisr8' kernel.c:(.text+0x628): undefined reference toisr9' kernel.c:(.text+0x638): undefined reference toisr10' kernel.c:(.text+0x648): undefined reference toisr11' kernel.c:(.text+0x658): undefined reference toisr12' kernel.c:(.text+0x668): undefined reference toisr13' kernel.c:(.text+0x678): undefined reference toisr14' kernel.c:(.text+0x688): undefined reference toisr15' kernel.c:(.text+0x698): undefined reference toisr16' kernel.c:(.text+0x6a8): undefined reference toisr17' kernel.c:(.text+0x6b8): undefined reference toisr18' kernel.c:(.text+0x6c8): undefined reference toisr19' kernel.c:(.text+0x6d8): undefined reference toisr20' kernel.c:(.text+0x6e8): undefined reference toisr21' kernel.c:(.text+0x6f8): undefined reference toisr22' kernel.c:(.text+0x708): undefined reference toisr23' kernel.c:(.text+0x718): undefined reference toisr24' kernel.c:(.text+0x728): undefined reference toisr25' kernel.c:(.text+0x738): undefined reference toisr26' kernel.c:(.text+0x748): undefined reference toisr27' kernel.c:(.text+0x758): undefined reference toisr28' kernel.c:(.text+0x768): undefined reference toisr29' kernel.c:(.text+0x778): undefined reference toisr30' kernel.c:(.text+0x788): undefined reference to `isr31' C:\Users\Administrator\Documents\os\src>nasm boot/bootsect.asm -f bin -o bin/bootsect.bin C:\Users\Administrator\Documents\os\src>cd bin C:\Users\Administrator\Documents\os\src\bin>copy /b bootsect.bin + kernel.bin os-image.bin bootsect.bin 1 file(s) copied. C:\Users\Administrator\Documents\os\src\bin>pause Press any key to continue . . .
How are you compiling and adding interrupt.asm into the main os-image.bin?
Just don't worry about it and proceed on to lesson 20 and it should go away (It did for me)
yeah i am getting the same problem. Once i try to link kernel.o with kernel_entry.o the ld linker shows the above message as if it can't define the isr's or irq's. How can i define them? Also i'm not compiling the interrupt.asm at all, i just left it as is. I have reached lesson 23 with no luck and the same message above.
Nevermind Got it figured out. It was a simple fix.
What was the fix? :)
@somerandomdev49 Did u update ur makfile?
I think fixed it. the solution above worked and the makefile is updated