Совместимы ли 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++.