vtable und Compileroption -f
-
Hallo,
ich arbeite an einer Anwendung für ein kleines eingebettetes System und muss deshalb auf Standardlibraries verzichten. Dennoch würde ich gerne virtuelle Methoden und Polymorphie einsetzen. Leider erhalte ich dabei die folgenden Fehler (vom Linker?):
undefined reference to
vtable for \_\_cxxabiv1::\_\_si\_class\_type_info' undefined reference to
vtable for __cxxabiv1::__class_type_info'Das ist das allgmeine Problem.
Bei meiner Suche nach Lösungen habe ich erfahren, dass die run-time type information deaktivieren kann, da ich keine dynamischen Typecasts vorhabe. Das geschieht durch -fno-rtti. Nun bekomme ich leider folgenden Fehler:
ld: -f may not be used without -shared
Könnte mir das evtl. jemand erklären: In den Man-Pages von gcc wird zwar auf alle möglichen dieser -f Befehle eingegangen, aber ich würde gerne wissen, was das genau bedeutet und warum ich dabei mit -shared ein gemeinsam genutztes Objekt erzeugen muss bzw. ob ich das irgendwie umgehen kann.
Und zu guter Letzt, falls das wirklich alles so sein muss, wie genau verwende ich dann dieses gemeinsam genutzte Objekt?
Für eine Lösung des allgemeinen Problems oder eine Erklärung der anderen Fragen wäre ich sehr dankbar.
Vielen Dank im Voraus,
Gnuffel
-
Du musst -fno-rtti an den g++ übergeben, nicht an ld.
Lars
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
[deleted]
Hab gerade gemerkt dass es ein anderes Problem ist