2

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

mylib.1.0.0 -> mylib.1.0.0U

重命名发生后,反正之前的名字没有恢复,也没有创建新的mylib.1.0.0 ,所以像mylib这样的符号链接仍然指向没有多余U的名字,链接失败。
有没有办法避免这种情况?或者甚至可能完全避免重新链接?我正在使用 libtool 1.5.6 版。

4

1 回答 1

1

显然我明白了......
这个问题很容易通过以下结构重现:

  • 一个lib文件夹,构建:
    • 利巴
    • 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 错误......

于 2009-01-06T14:22:54.863 回答