libtool

Инструмент GNU для создания переносимых библиотек на различных Unix-подобных платформах. Он абстрагирует процесс сборки статических (static) и разделяемых (shared) библиотек, скрывая платформо-зависимые особенности компиляторов, линкеров и систем сборки. libtool предоставляет единообразный интерфейс для работы с библиотеками, что упрощает создание кроссплатформенного программного обеспечения.

Особенности

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

Основные компоненты

libtool состоит из нескольких ключевых компонентов, которые совместно обеспечивают создание и управление переносимыми библиотеками (подробнее с документацией можно ознакомиться здесь).

Абстракция сборки библиотек

Основная задача libtool — предоставить единообразный интерфейс для сборки библиотек, скрывая различия между компиляторами и платформами. Для этого libtool заменяет стандартные команды компилятора и линкера (например, gcc, ar, ld) своими обёртками.

Ключевые команды:

  • libtool --mode=compile — компиляция исходного кода в объектные файлы с поддержкой libtool;
  • libtool --mode=link — линковка объектных файлов в библиотеку (статическую или разделяемую);
  • libtool --mode=install — установка библиотек с правильными разрешениями и путями;
  • libtool --mode=uninstall — удаление установленных библиотек;
  • libtool --mode=execute — запуск программ, связанных с библиотеками libtool.

Управление версиями библиотек

libtool предоставляет систему версионирования библиотек, которая позволяет управлять совместимостью между разными версиями. Эта система основана на трех числах: текущий (current), ревизия (revision) и возраст (age).

Правила версионирования:

  • Текущий интерфейс (current): увеличивается при добавлении новых функций или изменении интерфейса;
  • Ревизия (revision): увеличивается при обратно совместимых изменениях;
  • Возраст (age): разница между самой новой и самой старой обратно совместимой версией;
  • Автоматическая генерация номеров версий для разделяемых библиотек.

Работа со статическими и разделяемыми библиотеками

libtool управляет созданием как статических, так и разделяемых библиотек в зависимости от платформы и настроек. Он автоматически определяет, какие типы библиотек поддерживаются целевой платформой.

Особенности поддержки библиотек:

  • Создание статических библиотек через обёртки над ar и ranlib;
  • Создание разделяемых библиотек с правильными флагами компилятора и линкера;
  • Генерация файлов .la (libtool archive), которые содержат метаданные о библиотеке;
  • Обработка зависимостей между библиотеками во время линковки;
  • Поддержка weak symbols и других расширенных возможностей линковки.

Портативные плагины и модули

Библиотека libtool предоставляет механизмы для создания плагинов и модулей, которые могут быть загружены во время выполнения (dlopen). Это особенно полезно для приложений с расширяемой архитектурой.

Функции для плагинов:

  • libtool --mode=link с флагом -module для создания загружаемых модулей;
  • Поддержка автоматического разрешения зависимостей для плагинов;
  • Управление путями поиска библиотек во время выполнения;
  • Интеграция с системами загрузки плагинов (например, libltdl).

Управление зависимостями и путями

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

Механизмы управления зависимостями:

  • Автоматическое добавление -rpath при линковке разделяемых библиотек;
  • Генерация правильных путей установки в файлах .la;
  • Обработка transitive dependencies (зависимости зависимостей);
  • Поддержка относительных путей для сборки out-of-tree.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "libtool/2.4.7@aurora",
    )    

Процесс локальной сборки описан в документации.

libtool

GNU libtool is a generic library support script.
Версия
Домашняя страница
Скачать
armv7
541.36 Kb
MD5: cc0709185ac81c54135f912406ff0775
Updated: 08.04.2026, 20:59:57
armv8
545.26 Kb
MD5: 942f1570802d6457a3585ea3cc59c13f
Updated: 08.04.2026, 20:59:51
x86_64
545.43 Kb
MD5: 2445b5e4cae0104a359f65b2d62a2d4c
Updated: 08.04.2026, 20:59:58
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.