libtool:找不到库...为什么?

问题描述 投票:0回答:1

虽然我很少创建静态库,但更新 Slackware 后,我收到以下错误:

libtool:   error: cannot find the library '/usr/lib64/libfontconfig.la' or unhandled argument '/usr/lib64/libfontconfig.la'

该项目不创建库。 Slackware 还删除了 .la 文件。

问:我如何找出需要程序的哪一部分

libfontconfig.la
?为什么?

问:是否应该调用

libtool

c libtool gtk2 anjuta
1个回答
0
投票

对于你的第一个问题,确凿的证据是

unhandled argument '/usr/lib64/libfontconfig.la'
- 这意味着在你的 Makefile 中的某个地方,出现了字符串
/usr/lib64/libfontconfig.la
。看来您的项目直接或间接依赖于 fontconfig 库。我用来追踪这一点的步骤是:

  1. 从 make 输出中找出哪个目录有问题。
  2. 检查该目录中的
    Makefile
    ,找到哪个变量被分配了字符串 libfontconfig.la。可能是这样的
    BLAH_LIBS = ${libdir}/libfontconfig.la
  3. 该变量名 BLAH_LIBS 可能是由 pkgconfig 生成的,因为 configure.ac 语句如
    PKG_CHECK_MODULES([BLAH], [blah])
    所示,“查找包“blah”,并从其 blah.pc 文件中,使用前缀 BLAH 和后缀 _LIBS 和 _CFLAGS 构造
    BLAH_LIBS
    BLAH_CFLAGS
    变量,以及在 Makefile 中出现
    @BLAH_LIBS@
    @BLAH_CFLAGS@
    的地方替换它们'
  4. 由 blah 包分发的文件 blah.pc 可能包含硬编码的“libfontconfig.la”参考,位于
    Libs:
    行。

该错误位于包

blah
中,特别是文件
/lib/pkgconfig/blah.pc
或类似文件中。它应该是 -lfontconfig 而不是“libfontconfig.la”

对于你的第二个问题,我同意如果你的程序不创建共享库或静态库,那么它根本不需要使用libtools。

© www.soinside.com 2019 - 2024. All rights reserved.