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

¿Fue útil?

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:

  1. 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_"
  2. OSX fue derecho a quejarse
  3. 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top