libtool的.la文件有什么用?


Answers:


139

它是一个文本文件,其中包含对库的描述。

它允许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

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,允许以理解与发生了什么:

  • 库依赖
  • 实际文件名
  • 库版本和修订

无需依赖特定平台的库实现。


5
因此,如何你把.la文件,特定于平台的共享库文件,像libfoo.la - > libfoo.so *
theactiveactor

6
您不能libfoo.la仅保存元信息,即在libfoo.la(文本文件)中编写的哪里应该找到libfoo.so.xyz
Artyom

4
这是否意味着要生成.la文件,我需要使用libtool(例如从automake中)?可以依靠libtool链接对象文件(gnu.org/software/libtool/manual/html_node/Using-Automake.html),但是如果我要分发不带.la的库,这是否意味着链接将非常困难使用Cygwin或mingw一起使用?
dma_k 2010年

如果有人要禁用此版本的内容,则可以在_la_LDFLAGS中使用-avoid-version而不是-version-info
laishiekai


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.