Question

Obtenir une erreur de liens sur osx (pas d'erreurs sur linux ou fbsd pour le même code):

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

les 2 libs répertoriés dans l'erreur sont les miennes, mais le symbole est pas. c ++ silex confirme de la _dbg_char 'est dans les deux libs mais je ne suis pas sûr de savoir comment trouver où il vient.

astuces, des stratégies, des réponses purement et simplement pour savoir comment id _dbg_char serait grandement apprécié.

projet utilise libtool / autotools et gcc 4.01

Était-ce utile?

La solution

Trouver une macro journalisation / débogage qui a été dbg_char par définir 'dbg_ ## t'. solution était de le rendre statique. les leçons apprises:

  1. osx ajoute un chef de file _ noms symbole. il n'a pas été jusqu'à ce que je courais nm sur linux et ai vu le même symbole sans le _ que je pensais à rechercher le code de base pour « dbg_ » au lieu de « _dbg_ »
  2. osx avait raison de se plaindre
  3. ironie riche couper-coller une macro de débogage je ne comprenais pas complètement m'a fait tant de mal

Autres conseils

Vous pouvez vérifier si les deux libs #include un fichier d'en-tête qui déclare _dbg_char mais manquer le mot-clé extern. Peut-être que #ifdef « ed pour d'autres plates-formes afin que vous ne touchez ce problème sur OS X.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top