libtool 添加额外的“U” 到 .so 文件名

发布于 2024-07-10 12:33:49 字数 365 浏览 13 评论 0原文

我有一个用 autotools 构建的项目,分为两个文件夹; 第一个,lib,创建一些库,第二个,tools,链接它们。
构建失败,因为 libtool 在重新链接时按如下方式重命名库:

mylib.1.0.0 -> mylib.1.0.0U

重命名发生后,无论如何,以前的名称不会恢复,也不会创建新的 mylib.1.0.0,因此符号链接如下mylib 仍然指向没有额外 U 的名称,并且链接失败。
有什么办法可以避免这种情况吗? 或者甚至可能根本避免重新链接? 我正在使用 libtool 版本 1.5.6。

I have a project built with autotools, divided into two folders; the first one, lib, creates some libraries, and the second one, tools, links against them.
The build fails because libtool renames the libraries as follows while relinking:

mylib.1.0.0 -> mylib.1.0.0U

After the renaming occurs, anyway, the previous name is not restored, nor is a new mylib.1.0.0 created, so the symbolic links like mylib still point to the name without the extra U and the linking fails.
Is there any way to avoid this? or maybe even to avoid the relinking at all? I'm using libtool version 1.5.6.

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

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

发布评论

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

评论(1

忆梦 2024-07-17 12:33:49

显然我明白了...
使用以下结构可以轻松重现该问题:

  • 一个 lib 文件夹,构建:
    • liba
    • libb,取决于liba
  • 一个src文件夹,构建prog >,链接 libb

然后您必须在 lib/Makefile.am 中指定这一点:

lib_LTLIBRARIES = \
    libb.la \
    liba.la

此时将生成 liba.so.1.0.0U 文件。 相反,指定(请注意,库的顺序已更改)

lib_LTLIBRARIES = \
    liba.la \
    libb.la

构建工作正常。
我同意以正确的顺序指定事物在任何情况下都是最好的做法; 我仍然不清楚这是否是一个 libtool 错误......

Apparently I got it...
The problem is easily reproducible with the following structure:

  • a lib folder, building:
    • liba
    • libb, depending on liba
  • a src folder, building prog, which links libb

Then you must specify this in lib/Makefile.am:

lib_LTLIBRARIES = \
    libb.la \
    liba.la

At that point a liba.so.1.0.0U file will be produced. Specifying instead (note that the order of the libraries is changed)

lib_LTLIBRARIES = \
    liba.la \
    libb.la

the build works fine.
I agree that specifying things in the correct order is in any case the best thing to do; what is still unclear to me is if this is a libtool bug or not...

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