Для чего нужны .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
сохраняется между платформами между платформами, позволяющий понять, что происходит с:
- Библиотечные зависимости
- Фактические имена файлов
- Версия и редакция библиотеки
Вне зависимости от конкретной платформы реализации библиотек.
libtool
, чтобы связать объектные файлы (gnu.org /software/libtool/manual/html_node/Using-Automake.html), но если я хочу распространять библиотеку без .la, означает ли это, что будет очень сложно связать ее с помощью Cygwin или mingw?
- person dma_k; 01.06.2010
libtool --mode-link ${whatever_command_you_would_use_for_linking} -lfoo -L${where_libfoo.la_exists}
, и он напечатает команду связывания в качестве отладочной информации. В моем случае статические файлы находились в папке .libs /, содержащей файл * .la
- person Jenil Mewada; 30.11.2020
Согласно 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.