什么是libtool的.la文件?

有人可以告诉我什么libtool的.la文件是为了? 它如何与共享对象一起使用?

是包含图书馆的说明的文本文件。

它允许libtool创build平台独立的名称。

例如, 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在平台之间保存的唯一文件,可以理解以下情况:

  • 库依赖关系
  • 实际的文件名称
  • 库版本和修订版本

不依赖于图书馆的具体平台实施

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

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

我发现这里很好的解释.la文件http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

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