Hallo!
Ich habe ein Kleines Problem. Und zwar habe ich versucht einen kleinen Objektorentierten Kernel nach TeeJay's Tutorial zu basteln und bin drauf gekommen das es nur mit g++, nicht aber mit gcc funktioniert. (zumindest bei mir) Soweit funktioniert das ganze auch. Erst bei Linker (ld) scheitert das ganze mit folgender Fehlermeldung:
Kernel/temp/ckernel.obj(.text+0x3d): In function `__static_initialization_and_destruction_0(int, int)':
: undefined reference to `__dso_handle'
Kernel/temp/ckernel.obj(.text+0x49): In function `__static_initialization_and_destruction_0(int, int)':
: undefined reference to `__cxa_atexit'
make: *** [all] Fehler 1
Tja, sieht so aus als w?rde das an der standard-libary liegen oder? (wegen dem atexit) Meine Commands sehen folgenderma?en aus:
g++ -nostdlib -nostdinc -fno-builtin -fno-rtti -fno-exceptions -c -Os -o Kernel/temp/ckernel.obj Kernel/C/kernel.c
g++ -nostdlib -nostdinc -fno-builtin -fno-rtti -fno-exceptions -c -Os -o Kernel/temp/video.obj Kernel/C/video.cpp
ld -T Kernel/link.ld -o Kernel/temp/c32kernel.bin
Mein Linker-Script:
OUTPUT_FORMAT("binary")
INPUT(Kernel/temp/kernel32.obj Kernel/temp/ckernel.obj Kernel/temp/video.obj)
ENTRY(start)
SECTIONS
{
.text 0x200 : {
code = .; _code = .; __code = .;
*(.text)
. = ALIGN(1);
}
.data : {
data = .; _data = .; __data = .;
*(.data)
. = ALIGN(1);
}
.bss :
{
bss = .; _bss = .; __bss = .;
*(.bss)
. = ALIGN(1);
}
end = .; _end = .; __end = .;
}
Ich denke Code ist un?tig oder? Wenn doch nicht kann ich ihn auch noch posten ich will nur nicht das ganze Forum zuspammen.
W?re nett wenn mir jemand helfen k?nnte.