Принудительно игнорировать повторяющиеся символы? - PullRequest
6 голосов
/ 15 апреля 2011

Я строю некоторый устаревший код из проектов, использующих статические библиотеки. Теперь я получаю много ошибок, таких как:

ld: warning: option -m is obsolete and being ignored
ld: duplicate symbol <function name>

Есть ли способ пробиться через билд. Из того, что я вижу, «дублирующие» функции идентичны, это просто процесс сборки, который потерял свою актуальность. Проект действительно большой (и беспорядок в устаревшем коде на c и c ++), и я действительно хочу не тратить часы на изучение процесса сборки. Есть ли "быстрое решение"? Мне действительно нужно запустить эту программу только один раз, так что я могу жить с (некоторыми) проблемами стабильности.

1 Ответ

1 голос
/ 15 апреля 2011

Поиск в man ld («дубликаты») в моей системе привел к выводу:

   --traditional-format
       For some targets, the output of ld is different in some ways from
       the output of some existing linker.  This switch requests ld to use
       the traditional format instead.

       For example, on SunOS, ld combines duplicate entries in the symbol
       string table.  This can reduce the size of an output file with full
       debugging information by over 30 percent.  Unfortunately, the SunOS
       "dbx" program can not read the resulting program ("gdb" has no
       trouble).  The --traditional-format switch tells ld to not combine
       duplicate entries.

Попробуй. Может быть, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...