Frage

Abrufen eines Linker -Fehlers in OSX (keine Fehler unter Linux oder FBSD für denselben Code):

ld: duplicate symbol _dbg_char in .libs/liboekernel_la-OEK_get.o and .libs/liboekernel_la-OEK.o

Die 2 im Fehler aufgeführten Bibliotheken gehören mir, aber das Symbol ist nicht. C ++ Flint bestätigt, dass '_dbg_char' in beiden LIBs ist, aber ich bin mir nicht sicher, wie ich herausfinden soll, woher es kommt.

Tricks, Strategien, direkte Antworten für die ID _dbg_char wären sehr geschätzt.

Das Projekt verwendet Libtool/Autotools und GCC 4.01

War es hilfreich?

Lösung

Fand ein Protokollier- / Debugg -Makro, das dbg_char von 'definierte.dbg_ ## t'. Fix war, es statisch zu machen. gewonnene Erkenntnisse:

  1. OSX fügt Symbolnamen einen führenden _ hinzu. Erst als ich NM auf Linux lief und das gleiche Symbol ohne die führende _ sah, dachte ich, die Codebasis zu durchsuchen "dbg_" Anstatt von "_dbg_"
  2. OSX hatte Recht, sich zu beschweren
  3. Reiche Ironie, die ein Debugg-Makro, das ich nicht vollständig verstanden habe, hat mir so viel Ärger gemacht

Andere Tipps

Vielleicht möchten Sie überprüfen, ob beide Bibliotheken #include eine Header -Datei, die deklariert wird _dbg_char Aber vermissen Sie die extern Stichwort. Vielleicht ist das #ifdef Für andere Plattformen, damit Sie dieses Problem nur unter OS X aufnehmen.

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