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

mylib.1.0.0 -> mylib.1.0.0U

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

有帮助吗?

解决方案

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

  • A 文件夹,建筑:
    • 里巴
    • , , 根据 里巴
  • A 源代码 文件夹、建筑 程序, ,链接 libb

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

lib_LTLIBRARIES = \
    libb.la \
    liba.la

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

lib_LTLIBRARIES = \
    liba.la \
    libb.la

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top