Linux 什么是libtool';洛杉矶的档案?
libtool的Linux 什么是libtool';洛杉矶的档案?,linux,libraries,libtool,Linux,Libraries,Libtool,libtool的.la文件用于什么?它们是如何与共享对象一起使用的?它是一个包含库描述的文本文件 它允许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 # St
.la
文件用于什么?它们是如何与共享对象一起使用的?它是一个包含库描述的文本文件
它允许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
根据:
在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
保存的唯一文件,它允许了解以下情况:
- 库依赖项
- 实际文件名
- 图书馆版本和修订
我在这里找到了关于.la文件的很好的解释
概要(我理解的方式):因为libtool在内部处理静态和动态库(通过--diable shared或--disable static),所以它在构建的库文件上创建了一个包装器。在libtool支持的环境中,它们被视为二进制库文件 那么,如何将.la文件转换为特定于平台的共享lib文件,如libfoo.la->libfoo.so.*您不能将libfoo.la仅保存元信息,例如,在libfoo.la(文本文件)中,您应该在哪里找到libfoo.so.x.y.zd?这是否意味着为了生成.la文件,我需要使用libtool(例如,来自automake)?可以依靠
libtool
来链接对象文件(),但如果我想分发一个没有.la的库,这是否意味着使用Cygwin或mingw链接它会非常困难?如果有人想禁用这个版本,可以在_la_LDFLAGS中使用-avoid version,而不是-版本-info@theactiveactor由于.la文件包含元数据,所以它必须在某个地方具有静态库。要找到它,您可以运行libtool--modelink${无论您使用什么命令进行链接}-lfoo-L${where_libfoo.la_exists}
,它会将链接命令作为调试信息打印出来。在我的例子中,静态文件位于.libs/文件夹中,其中也包含*.la文件
/lib/libfoo.dll.a # Import library
/lib/libfoo.a # Static library
/lib/libfoo.la # 'libtool' library
/bin/foo_1.dll # DLL