LD: Duplicar símbolo _dbg_char
Pregunta
Conseguir un error enlazador en osx (no hay errores en Linux o FBSD para el mismo código):
ld: duplicate symbol _dbg_char in .libs/liboekernel_la-OEK_get.o and .libs/liboekernel_la-OEK.o
2 las bibliotecas enumeradas en el error es mío sino el símbolo no lo es. c ++ pedernal confirma '_dbg_char' es en ambas bibliotecas, pero no estoy seguro de cómo encontrar de dónde viene.
trucos, estrategias, respuestas directas de cómo _dbg_char Identificación sería muy apreciada.
proyecto está utilizando libtool / autotools y gcc 4.01
Solución
Encontrados una macro de registro / depuración que se define dbg_char por 'dbg_ ## t
'. solución era hacer más estática. lecciones aprendidas:
- OSX agrega un líder _ nombres de símbolo. no fue hasta que me encontré nm en Linux y vi el mismo símbolo sin anteponer _ que pensé para buscar en la base de código para "
dbg_
" en lugar de "_dbg_
" - OSX fue derecho a quejarse
- rica ironía que cortar y pegar una macro de depuración yo no me entienden plenamente causado tantos problemas
Otros consejos
Es posible que desee comprobar si ambas bibliotecas #include
un archivo de cabecera que declarar _dbg_char
pero se pierda la palabra clave extern
. Tal vez por #ifdef
'ed a cabo para otras plataformas por lo que sólo llegar a ese problema en OS X.