Изменения, внесенные в gcc 4.5 в отношении связывания?

У меня есть проект, который создает разделяемую библиотеку, которая связана с другой, также совместно используемой библиотекой.

Когда я компилирую и связываю его с gcc 4.4, все работает:

  1. нет предупреждений или ошибок времени компиляции,
  2. нет предупреждений или ошибок времени компоновки и
  3. ldd libmyproject.so правильно сообщает зависимость от другой разделяемой библиотеки.

Когда я компилирую и связываю его с gcc 4.5, с другой стороны (с точно такими же флагами), у меня возникают следующие симптомы:

  1. нет предупреждения или ошибки времени компиляции,
  2. нет предупреждения времени связывания или ошибка , но
  3. библиотека неправильно связана с другой разделяемой библиотекой: это проявляется, когда я запускаю ldd и не вижу соединения, а также когда я пытаюсь его использовать: хотя он работает с gcc 4.4, он вылетает во время выполнения с gcc 4.5 с ошибкой «символ не найден» (конечно, из другой библиотеки).

Я просмотрел примечания к выпуску и интуитивно понял, что это как-то связано с новой оптимизацией времени компоновки, но я не мог понять их достаточно подробно.

Сталкивался ли кто-нибудь с подобной ситуацией и / или может ли кто-нибудь дать совет?

(Обратите внимание, что результаты с 4.6 по внешнему виду идентичны 4.5).

8
задан osgx 7 November 2011 в 23:25
поделиться