Art*_*yom 132
它是一个文本文件,包含库的描述.
它允许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
Run Code Online (Sandbox Code Playgroud)
在Cygwin下:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # libtool library
/bin/cygfoo_1.dll # DLL
Run Code Online (Sandbox Code Playgroud)
在Windows MinGW下:
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # 'libtool' library
/bin/foo_1.dll # DLL
Run Code Online (Sandbox Code Playgroud)
因此libfoo.la
,通过libtool
允许了解发生的情况,在平台之间保留的唯一文件是:
不依赖于库的特定平台实现.
Tho*_*ard 11
根据http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files,他们需要处理依赖关系.但是使用pkg-config可能是更好的选择:
在一个完美的世界里,每一个静态库需要依赖会对pkg配置自己的.PC文件,每包试图静态链接到该库将使用pkg配置--static去链接到库.
我在这里找到了关于.la文件的非常好的解释 http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html
总结(我理解的方式):因为libtool在内部处理静态和动态库(通过--diable-shared或--disable-static),所以它会在它构建的库文件上创建一个包装器.在libtool支持的环境中,它们被视为二进制库文件.