什么是libtool的.la文件?

时间:2009-08-06 10:11:20

标签: linux libraries libtool

libtool的.la文件是什么?它们如何与共享对象一起使用?

3 个答案:

答案 0 :(得分:126)

这是一个文本文件,其中包含库的说明。

它允许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.lalibtool之间在平台之间保留的唯一文件,可以让我们了解会发生什么:

  • 图书馆依赖
  • 实际文件名
  • 图书馆版本和修订版

不依赖于库的特定平台实现。

答案 1 :(得分:9)

根据http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files,他们需要处理依赖关系。但是使用pkg-config可能是更好的选择:

  

在一个完美的世界中,每个需要依赖的静态库都有自己的.pc文件用于pkg-config,并且每个尝试静态链接到该库的包都将使用pkg-config --static来获取要链接的库到。

答案 2 :(得分:8)

我在这里找到了关于.la文件的非常好的解释 http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

摘要(我理解的方式):因为libtool在内部处理静态和动态库(通过--diable-shared或--disable-static),所以它会在它构建的库文件上创建一个包装器。在libtool支持的环境中,它们被视为二进制库文件。