Книга: Разработка приложений в среде Linux. Второе издание
6.3. Совместимость
6.3. Совместимость
Приложения, которые скомпилированы с заголовочными файлами из библиотеки glibc
и привязанные к одной из ее версий, будут работать и с более поздними версиями библиотеки. Эта обратная совместимость обычно означает, что программисту не придется пересобирать свои приложения только из-за того, что выпущена новая версия glibc
.
Существуют практические ограничения для обратной совместимости. Во-первых, смешивание объектов из разных версий glibc
в одном исполняемом файле может иногда работать, но специально для такой совместимости ничего не предпринимается. Следует отметить, что это касается динамически загружаемых, а также статически связанных объектов. Во-вторых, приложение должно использовать только стандартные возможности glibc
. Приложение, которое зависит от побочных эффектов ошибок или основано на неопределенном поведении одной из версий glibc
, может не работать с более поздними версиями этой библиотеки. Приложение, компонуемое с приватными символами glibc
(обычно они имеют префикс а_
), также вряд ли будет работать с более новыми версиями glibc
.
Обратная совместимость поддерживается тогда, когда задействованы символы, разработанные специально для соответствия стандартам версий. Когда разработчики glibc
хотят внести несовместимое изменение в glibc
, они сохраняют оригинальную реализацию или пишут совместимую реализацию данного интерфейса и помечают его более старым номером версии glibc
. Затем они реализуют новый интерфейс (который может отличаться по семантике, сигнатуре или и тем, и другим) и помечают его новым номером версии glibc
. Приложения, построенные на базе старой версии glibc
, используют старый интерфейс, а приложения, построенные на основе новой версии — новый интерфейс.
Большинство других библиотек поддерживают совместимость, включая номер версии в имя библиотеки и позволяя множеству разных версий быть установленными одновременно. Например, инструментальные наборы GTK+ 1.2 и GTK+ 2.0 могут быть одновременно установлены в одной системе, каждый со своим собственным набором заголовочных и библиотечных файлов, путем встраивания в путь к заголовочным файлам и файлам библиотек имени версии.
Раздел стандарта по наименованию разделяемых библиотек в Linux включает старший номер версии для возможности установки в системе множества версий библиотеки. Это используется не очень часто, поскольку в одной системе невозможно скомпоновать новые приложения с множеством версий библиотеки; это просто обеспечивает поддержку лишь обратной совместимости для существующих приложений, построенных на более старых системах. На практике разработчикам требуется собирать приложения со многими версиями одной и той же библиотеки, поэтому большинство основных библиотек содержат в своем названии и номер версии.
- Совместимость клиентов и серверов различных версий
- Изменения оптимизатора, направленные на совместимость
- Несовместимость комплектующих
- 5.2.10. Совместимость с Microsoft Excel
- 5.1.16. Совместимость с Microsoft Word
- Совместимость
- 1.5. Проверка на совместимость
- Совместимость (Compatibility)
- 11.10 Совместимость и различия
- 5.3.5. Совместимость Keynote с приложениями Windows
- 13.4. Совместимость на стороне клиента
- Совместимость нескольких серверов