У меня есть проект, который создает общую библиотеку, которая связана с другой, также общей, библиотекой.
Когда я компилирую и связываю его с помощью gcc 4.4, все работает:
- нет предупреждения или ошибки времени компиляции,
- нет предупреждения или ошибки времени компоновки и
ldd libmyproject.so
правильно сообщает о зависимости с другой общей библиотекой.
С другой стороны, когда я компилирую и связываю его с gcc 4.5 (с точно такими же флагами), у меня появляются следующие симптомы:
- нет предупреждения или ошибки во время компиляции,
- нет предупреждения о времени или ошибке связывания , но
- библиотека некорректно связана с другой разделяемой библиотекой: это проявляется, когда я запускаю
ldd
и не вижу соединения, итакже, когда я пытаюсь использовать его: хотя он работает с gcc 4.4, он аварийно завершает работу во время выполнения с gcc 4.5 с ошибкой «символ не найден» (конечно, из другой библиотеки).
Я посмотрел заметки о выпуске и мой intДело в том, что это как-то связано с новой оптимизацией времени соединения, но я не мог понять их достаточно подробно.
Кто-нибудь сталкивался с подобной ситуацией и / или есть какие-либо советы, чтобы предложить?
(Обратите внимание, что результаты с 4.6 похожи на 4.5).