LD: Duplikates Symbol _dbg_char
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
Lösung
Fand ein Protokollier- / Debugg -Makro, das dbg_char von 'definierte.dbg_ ## t
'. Fix war, es statisch zu machen. gewonnene Erkenntnisse:
- 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_
" - OSX hatte Recht, sich zu beschweren
- 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.