Для чего нужен файл .la libtool? - PullRequest
142 голосов
/ 06 августа 2009

Для чего нужны .la файлы libtool? Как они используются с общим объектом?

Ответы [ 3 ]

130 голосов
/ 06 августа 2009

Это текстовый файл с описанием библиотеки.

Позволяет 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, позволяющий понять, что происходит с:

  • Зависимости библиотеки
  • Фактические имена файлов
  • Версия и редакция библиотеки

Вне зависимости от конкретной платформы реализации библиотек.

11 голосов
/ 09 февраля 2012

Согласно http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files, они необходимы для обработки зависимостей. Но использование pkg-config может быть лучшим вариантом:

В идеальном мире каждая статическая библиотека, нуждающаяся в зависимостях, имела бы свой собственный файл .pc для pkg-config, и каждый пакет, пытающийся статически связать эту библиотеку, использовал бы pkg-config --static, чтобы заставить библиотеки связываться к.

9 голосов
/ 23 августа 2012

Я нашел очень хорошее объяснение о файлах .la здесь http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

Резюме (как я понял): поскольку libtool внутренне обрабатывает статические и динамические библиотеки (через --diable-shared или --disable-static), он создает оболочку для создаваемых библиотечных файлов. Они рассматриваются как двоичные файлы библиотеки в среде, поддерживаемой libtool.

...