libtool 的 .la 文件有什么用?

发布于 2024-07-30 11:45:34 字数 57 浏览 13 评论 0原文

libtool 的 .la 文件有什么用? 它们如何与共享对象一起使用?

What are libtool's .la files for? How are they used with a shared object?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

琉璃繁缕 2024-08-06 11:45:34

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

它允许 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.lalibtool 在平台之间保留的唯一文件,允许了解发生的情况:

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

不依赖在特定平台上实现的库。

It is a textual file that includes a description of the library.

It allows libtool to create platform-independent names.

For example, libfoo goes to:

Under 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

Under Cygwin:

/lib/libfoo.dll.a    # Import library
/lib/libfoo.a        # Static library
/lib/libfoo.la       # libtool library
/bin/cygfoo_1.dll    # DLL

Under Windows MinGW:

/lib/libfoo.dll.a    # Import library
/lib/libfoo.a        # Static library
/lib/libfoo.la       # 'libtool' library
/bin/foo_1.dll       # DLL

So libfoo.la is the only file that is preserved between platforms by libtool allowing to understand what happens with:

  • Library dependencies
  • Actual file names
  • Library version and revision

Without depending on a specific platform implementation of libraries.

长安忆 2024-08-06 11:45:34

根据 http://blog.flameeyes.eu/2008 /04/14/what-about-those-la-files,它们需要处理依赖关系。 但使用 pkg-config 可能是更好的选择:

在完美的世界中,每个需要依赖项的静态库都会有自己的 pkg-config .pc 文件,并且每个尝试静态链接到该库的包都将使用 pkg-config --static 来链接库到。

According to http://blog.flameeyes.eu/2008/04/14/what-about-those-la-files, they're needed to handle dependencies. But using pkg-config may be a better option:

In a perfect world, every static library needing dependencies would have its own .pc file for pkg-config, and every package trying to statically link to that library would be using pkg-config --static to get the libraries to link to.

情场扛把子 2024-08-06 11:45:34

我在这里找到了关于 .la 文件的很好的解释
http://openbooks.sourceforge.net/books/wga/dealing-with -libraries.html

摘要(我的理解方式):因为 libtool 在内部处理静态和动态库(通过 --diable-shared 或 --disable-static),所以它在它构建的库文件上创建了一个包装器。 它们在 libtool 支持的环境中被视为二进制库文件。

I found very good explanation about .la files here
http://openbooks.sourceforge.net/books/wga/dealing-with-libraries.html

Summary (The way I understood): Because libtool deals with static and dynamic libraries internally (through --diable-shared or --disable-static) it creates a wrapper on the library files it builds. They are treated as binary library files with in libtool supported environment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文