Для чего нужен файл 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.