совместимость с версией g ++ - PullRequest
       3

совместимость с версией g ++

3 голосов
/ 15 сентября 2010

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

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

Ответы [ 2 ]

4 голосов
/ 15 сентября 2010

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

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

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

2 голосов
/ 15 сентября 2010

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

...