Libtool 的 .la文件是用来做什么的? 它们是如何与共享对象一起使用的?
.la
它是一个文本文件,其中包含库的说明。
它允许 libtool创建独立于平台的名称。
libtool
例如,libfoo分配给:
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在平台之间保存的唯一文件,它可以理解:
libfoo.la
不依赖于特定的库平台实现。
根据 http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files,他们需要处理依赖关系,但是使用 pkg-config 可能是一个更好的选择:
在一个完美的世界中,每个需要依赖关系的静态库都有自己的依赖关系。Pkg-config 的 pc 文件,每个尝试静态链接到该库的包都将使用 pkg-config —— static 来获得要链接到的库。
我在这里找到了关于.la 文件的很好的解释 Http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html
摘要(我理解的方式) : 因为 libtool 在内部处理静态和动态库(通过—— diable-share 或—— disable-static) ,所以它在构建的库文件上创建一个包装器。它们在 libtool 支持的环境中被视为二进制库文件。