什么是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支持的环境中被视为二进制库文件。