3

Это конкретный вопрос, связанный с gcc. У меня есть библиотека, скомпилированная с g ++ 4.1.2, которую я хочу предоставить пользователю. Пользователь может использовать наш API в своем коде и связывать нашу библиотеку с целью создания окончательного исполняемого файла.g ++ совместимость версий

Вопрос, который у меня есть, связан с совместимостью версии g ++. Некоторые из наших пользователей используют g ++ 4.4.3, другие 4.3.3 и другие 4.2.1. Является ли библиотека, скомпилированная с 4.1.2 совместимой со всеми этими версиями g ++? Я предполагаю, что они должны быть, потому что они совместимы с ABI. Но некоторые из наших клиентов не согласны. Я действительно не хочу отправлять четыре разные версии одной и той же библиотеки. Если они несовместимы, есть ли конкретная причина или есть способ избежать несовместимости?

ответ

2

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

4

Две библиотеки совместимы друг с другом, если они используют один и тот же ABI (Application Binary Interface). В последний раз GCC официально изменил ABI, насколько я помню, был с v3.3 или v3.4.

Однако это справедливо только для , соответствующего. Любой источник, который полагается на недокументированное или неуказанное поведение, может разорваться без дальнейшего уведомления.

Итак, ответ: ваши версии для компиляторов совместимы; вопрос в том, является ли исходный код.

+0

Пользователь «Занятый русский» указал, что «... была несовместимость в libstdC++. So.6.0.9 поставляется с GCC 4.2.1». Спасибо за дополнение. – DevSolar

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