Answers:
它是一个文本文件,其中包含对库的描述。
它允许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一起使用?
根据http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files,需要使用它们来处理依赖项。但是使用pkg-config可能是一个更好的选择:
在理想情况下,每个需要依赖项的静态库都将为pkg-config拥有自己的.pc文件,并且每个尝试静态链接至该库的软件包都将使用pkg-config --static来获取要链接的库。
我在http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html找到了有关.la文件的很好的解释
简介(根据我的理解):由于libtool在内部处理静态和动态库(通过--diable-shared或--disable-static),因此会在所构建的库文件上创建包装器。在libtool支持的环境中,它们被视为二进制库文件。