ld: дублированный символ _dbg_char - PullRequest
0 голосов
/ 13 июля 2009

Получение ошибки компоновщика в osx (нет ошибок в linux или fbsd для одного и того же кода):

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

2 лимба, перечисленные в ошибке, мои, но символ - нет. Флинт c ++ подтверждает, что _dbg_char есть в обеих библиотеках, но я не уверен, как найти его.

хитрости, стратегии, откровенные ответы о том, как идентифицировать _dbg_char, будет принята с благодарностью.

проект использует libtool / autotools и gcc 4.01

Ответы [ 2 ]

1 голос
/ 02 августа 2009

Найден макрос ведения журнала / отладки, который определял dbg_char как 'dbg_ ## t'. исправить было сделать его статичным. извлеченные уроки:

  1. osx добавляет ведущий _ к именам символов. это было до тех пор, пока я не запустил nm в Linux и не увидел тот же символ без начального _, который я думал искать в кодовой базе для "dbg_" вместо "_dbg_"
  2. Ос был прав, чтобы жаловаться
  3. богатая ирония, что вырезание и вставка отладочного макроса, который я не до конца понимал, доставили мне столько хлопот
0 голосов
/ 13 июля 2009

Возможно, вы захотите проверить, являются ли обе библиотеки #include заголовочным файлом, в котором объявлено _dbg_char, но отсутствует ключевое слово extern. Может быть, это #ifdef 'исключено для других платформ, так что вы можете решить эту проблему только в OS X.

...