совместимы ли gcc-3 с gcc-4? - PullRequest
9 голосов
/ 06 мая 2011

У меня есть статическая библиотека, которая была скомпилирована с помощью gcc 3.4.3. Я хотел бы использовать это в коде, который теперь будет скомпилирован с помощью gcc-4. Я смутно прочитал, что двоичные файлы gcc-3 и gcc-4 несовместимы и что библиотеку нужно будет перекомпилировать, но я просто хочу получить подтверждение по этому поводу. Разве нет библиотеки gcc-3, которую можно использовать с gcc-4?

1 Ответ

3 голосов
/ 09 мая 2011

Заставить кого-то еще в организации или у поставщика обновить свою библиотеку до gcc 4 - не всегда вариант, особенно если они отказались от него.

Если C ++: предполагается, что способныссылка, во время выполнения вы можете взорваться в коде шаблона стандартной библиотеки C ++, который использует потоки, так как символы, сгенерированные g ++ 4, разрешены в соответствии с определениями, сгенерированными g ++ 3.

Вы можете увидеть это предупреждение при компоновке:

/ usr / bin / ld: warning: libstdc ++. So.5, необходимый для (устаревшая статическая lib), может конфликтовать с libstdc ++. So.6

Вот пример, который вы можете получить в: base classdestructor ~ basic_stringbuf () (фактически шаблон) может быть определен в вашем модуле, скомпилированном в g ++ 3, который по ошибке вызывается деструктором ~ basic_ostringstream () в libstdc ++ so.6, который вызывается скомпилированным модулем g ++ 4.Ka-Boom.

Я попробовал compat-libstdc ++ - 33, но безрезультатно.

Тем не менее, я все еще связываю 32-битные библиотеки gcc 3 эпохи C с моим gcc 4.1.2Программы на C ++.

...