LD linkt nicht
-
Hi,
ich hab eine Datei main.cpp:
#include "io.hpp" int main(void) { clrscr(); }
Der Header sieht so aus:
#ifndef IO_INCLUDED #define IO_INCLUDED void clrscr(void); #endif
Ich linke so:
ld -e _main -Ttext 0x1000 -o kernel.o main.o io.o
ld -i -e _main -Ttext 0x1000 -o kernel.o main.o io.oUnd kriege als Fehler:
main.o(.eh_frame+0x11):main.cpp: undefined reference to `__gxx_personality_v0'Warum? Diese Funktion wird nirgends verwendet!
ChrisM
-
c++ hat viele coole features und viele davon sind nicht nur teil der sprache, sondern brauchen auch verschiedene symbole der standard lib.
du musst also dein c++ programm so compilieren, dass der compiler diese features weglässt. dann musst du zb auch auf exceptions verzichten. sag mal, welchen compiler du verwendest...
falls das g++ ist soltest du:
-fno-exceptions dazu nehmen, ebenso wie -fno-builtin. wenn du auch noch bestimmte header dateien verwendest mit <> dann wäre -nostdinc -nostdinc++ auch klug.
-
Ich kompiliere so:
[code]gcc -ffreestanding -c ../kernel/main.cpp -o main.o
gcc -c ../kernel/io.cpp -o io.o[/code]ChrisM