2015-05-21 4 views
0

Могу ли я использовать общие библиотеки, созданные разными версиями GCC и как?GCC «неопределенная ссылка на», но существуют символы

У меня есть undefined reference to ошибки при соединении. Но эти имена существуют в библиотеках so. Я понял, что ЛИЭС были построены с более старой версии GCC (2.8), я использую версию GCC (4.7) и, таким образом, кажется, что имена искажаются по-разному:

Построенный НКУ 2.8.1:

setInfo__10SS7_HeaderUl

Построенный НКУ 4.7.2:

_ZN10SS7_Header7setInfoEm

и не может быть резол ved (справа?).

Можно ли использовать старые разделяемые библиотеки, не перестраивая их? (Возможно, я могу перекомпилировать существующий код с использованием некоторых флагов обратной совместимости и т. Д., Чтобы соответствовать старым библиотекам)

+0

Похоже, что они изменили название mangling. – Barmar

ответ

1

Есть ли способ использовать старые разделяемые библиотеки, не перестраивая их?

No: gcc-2.x и 3.x не совместимы с ABI.

Если вам удалось как-то исправить манипуляцию, вы просто получите крах, потому что макет объекта совершенно другой. Изменением было изменено точно, чтобы избавить вас от необходимости отлаживать сбои во время выполнения, которые было бы очень трудно понять.

Смежные вопросы