Для чего нужны файлы libtool .la
? Как они используются совместно с объектом?
Для чего нужен файл libtool.la?
Ответ 1
Это текстовый файл, который содержит описание библиотеки.
Он позволяет 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
So libfoo.la
- это единственный файл, который сохраняется между платформами libtool
, что позволяет понять, что происходит с:
- Библиотечные зависимости
- Фактические имена файлов
- Версия и версия библиотеки
Без зависимости от конкретной реализации библиотек платформы.
Ответ 2
Согласно http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files, они необходимы для обработки зависимостей. Но использование pkg-config может быть лучшим вариантом:
В идеальном мире каждая статическая библиотека, нуждающаяся в зависимостях, будет иметь свой собственный .pc файл для pkg-config, и каждый пакет, пытающийся статически связать с этой библиотекой, будет использовать pkg-config -static, чтобы заставить библиотеки ссылаться к.
Ответ 3
Я нашел очень хорошее объяснение о файлах .la здесь http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html
Резюме (То, как я понял): Поскольку libtool имеет дело со статическими и динамическими библиотеками внутри (через --disable-shared или -disable-static), он создает обертку для файлов библиотеки, которые он создает. Они рассматриваются как файлы двоичной библиотеки в среде, поддерживаемой libtool.