I wrote a small toy kernel in C++, and a small graphics library.
now I wanted to call this function from assembly, but that doesn't really work out.
I can compile the cpp en asm files into object code, but when I link them, it keeps saying
'error, undefined reference to _main'
the assembly code looks like this:
the kernel cpp file looks like this:
and since I'm using a linker file, I'll give that one as well:
I would really like to know why I can't call '_main'
now I wanted to call this function from assembly, but that doesn't really work out.
I can compile the cpp en asm files into object code, but when I link them, it keeps saying
'error, undefined reference to _main'
the assembly code looks like this:
;loader.asm [BITS 32] ;protected mode global start extern _main ;this is our C++ code start: call _main ;call the int main(void) code in C++ source cli ;clear interrupts hlt ;halt the CPU
the kernel cpp file looks like this:
#include "video.h"
int main(void)
{
video vid; //local variable
vid.Write("hello world!");
}
and since I'm using a linker file, I'll give that one as well:
OUTPUT_FORMAT("binary")
ENTRY(start)
SECTIONS
{
.text 0x100000 :
{
code = .;_code = .;__code = .;
*(.text)
. = ALIGN(4096);
}
.data :
{
data = .;_data = .;__data = .;
*(.data)
. = ALIGN(4096);
}
.bss :
{
bss = .;_bss = .;__bss = .;
*(.bss)
. = ALIGN(4096);
}
end = .;_end = .; __end = .;
}
I would really like to know why I can't call '_main'