Для чего нужен файл.la libtool?
Что такое libtool .la
файлы для? Как они используются с общим объектом?
3 ответа
Это текстовый файл, который включает описание библиотеки.
Это позволяет libtool
создавать независимые от платформы имена.
Например, libfoo
идет к:
Под Linux:
/lib/libfoo.so # Symlink to shared object
/lib/libfoo.so.1 # Symlink to shared object
/lib/libfoo.so.1.0.1 # Shared object
/lib/libfoo.a # Static library
/lib/libfoo.la # 'libtool' library
Под Cygwin:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # libtool library
/bin/cygfoo_1.dll # DLL
Под Windows MinGW:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # 'libtool' library
/bin/foo_1.dll # DLL
Так libfoo.la
это единственный файл, который сохраняется между платформами libtool
позволяя понять, что происходит с:
- Библиотечные зависимости
- Фактические имена файлов
- Версия библиотеки и ревизия
Вне зависимости от конкретной платформы реализации библиотек.
Согласно http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files, они необходимы для обработки зависимостей. Но использование pkg-config может быть лучшим вариантом:
В идеальном мире каждая статическая библиотека, нуждающаяся в зависимостях, имела бы свой собственный файл.pc для pkg-config, и каждый пакет, пытающийся статически связать эту библиотеку, использовал бы pkg-config --static для получения библиотек для ссылки.
Я нашел очень хорошее объяснение о файлах.la здесь http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html
Резюме (как я понял): поскольку libtool внутренне обрабатывает статические и динамические библиотеки (через --diable-shared или --disable-static), он создает оболочку для файлов библиотеки, которые он создает. Они рассматриваются как двоичные файлы библиотеки в среде, поддерживаемой libtool.