Совместимы ли gcc-3 с gcc-4?

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

1 ответ

Решение

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

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

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

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

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

Я попробовал compat-libstdC++-33, но безуспешно.

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

Другие вопросы по тегам