Hey guys,
It's been about eight years since I last did anything OS Dev related, and I want to get back into it. I'm taking baby steps to refresh my memory; however, I'm running into an issue with linking that I can't figure out. Whenever I try to link my object files, I get this error in the terminal:
Code:
start.o: In function `stublet':
start.asm:(.text+0x29): undefined reference to `_main'
I'm running 64-bit Linux Mint in Parallels on Mac OS X.
I have
start.asm with this snippet of code:
Code:
stublet:
extern _main
call _main
jmp $
To compile the asm file, I'm using this:
Code:
nasm -f elf64 -o start.o start.asm
main.cCode:
void main(){
...
}
To compile main.c, I'm using these arguments:
Code:
gcc -Wall -o -fstrength-reduce -fomit-frame-pointer -finline-functions -nostdinc -fno-builtin -I./include -c -o main.o main.c
Finally, to link them, I'm using this:
Code:
ld -T linker.ld -o kernel.bin start.o main.o
Is the error caused to the way I'm compile my ASM, linking my files, or the way I'm calling an external function from Assembly?
Thanks for all the help! It's going to take a little bit to get back in the grove of things.
I'm also going based off of Bran's Kernel Development guide (figured that might be a decent place to start with a memory refresher)... although, a lot of it seems questionable. Does anyone have any opinions on that guide?