Frage

Ich mache einen Build auf einer 32 -Bit -SLES10 -Maschine. Mit GCC 3.4.2

Hier ist ein Beispielfehler

`.L8245' referenced in section `.rodata' of CMakeFiles/myproj.dir/c++/util/MyObj.o: defined in discarded section
 `.gnu.linkonce.t._ZN5boost9re_detail9reg_grep2INS0_21grep_search_predicateIPKcSaIcEEES4_cNS_12regex_traitsIcEES5_S5_EEjT_T0_SA_RKNS_14reg_expressionIT1_T2_T3_EEjT4_' of CMakeFiles/myproj.dir/c++/util/MyObj.o
War es hilfreich?

Lösung

Dies ist in der Regel darauf zurückzuführen, dass 2 verschiedene .CPPs mit verschiedenen Compiler -Switches kompiliert werden - aber auch mit denselben Vorlagen. Die generierten Vorlagen -Instanziationen können sich in ihrer Definition/Referenz unterscheiden, und wenn die ausgewählte Instanziierung die genauen Symbole nicht wie diejenigen definiert, die verworfen wurden, können Sie diesen Fehler erhalten.

Überprüfen Sie, ob alle Ihre .CPPs mit genau den selben Compiler -Switches und Definierungen zusammengestellt sind. Wenn dies nicht möglich ist, ordnen Sie die .OBJ -Dateien in der Linker Commandline neu.

BEARBEITEN:

Wenn Sie mit vorgebauten C ++ - Bibliotheken verknüpfen, können Sie die Compiler -Schalter, die zum Erstellen dieser Bibliotheken verwendet werden, duplizieren.

Andere Tipps

Dies kann auf eine neuere Version von Binutils zurückzuführen sein. Binutils Version 2.15 behandelte dies als einen nicht tödlichen Fehler, aber spätere Versionen von Binutils änderten sich und so begann der Link fehlgeschlagen. Sehen https://bugzilla.redhat.com/show_bug.cgi?id=191618 Für einen ähnlichen Bericht.

In meinem Fall konnte ich die Dinge noch einmal verlinken lassen, indem ich Binutils 2.16.1 anstelle von Binutils 2.17 explizit verwendet habe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top