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

libtool: Cannot find the library... Why?

提问人:jcoppens 提问时间:7/1/2023 最后编辑:jcoppens 更新时间:8/30/2023 访问量:177

问:

虽然我很少创建静态库,但在更新 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 安朱塔

评论

1赞 Allan Wind 7/1/2023
libtool 在构建时使用,而 ld 在运行时使用。
0赞 jcoppens 7/1/2023
当然,你是对的。我不应该在凌晨 3 点提问。我的意思是 GCC 的链接器阶段。

答:

0赞 Jaredo Mills 8/30/2023 #1

对于你的第一个问题,冒烟枪是 - 这意味着在你的 Makefile 中的某个地方,字符串会出现。您的项目似乎直接或间接依赖于 fontconfig 库。我用于跟踪此情况的步骤是:unhandled argument '/usr/lib64/libfontconfig.la'/usr/lib64/libfontconfig.la

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

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

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

评论

0赞 RootPhoenix 9/2/2023
我在 lldpd 包的 buildroot 中也遇到了这个错误,当我尝试在“output/product-name/build/lldpd/”目录中运行 make 时,我收到错误:libtool:错误:找不到库“/home/ngadre/Documents/release6.6.1/caos/output/product-name/target/usr/lib/libjansson.la”
0赞 RootPhoenix 9/2/2023
makefile 具有正确的字符串:LIBS = -lz -ljansson
0赞 Jaredo Mills 9/2/2023
如果 libtool 在其命令行上抱怨某些内容,请找出该命令行的来源。如果“caos”指的是这个程序,那么它确实需要 X,因此需要 fontconfig 包。如果 lldpd 依赖于 caos 目录中的某些内容,那么您可能有一个指向 caos 程序的PKG_CONFIG_PATH环境变量。我建议有条不紊地一步一步地跟踪问题。首先,找到引用 的命令行,然后从那里进行跟踪。libfontconfig.la
0赞 Jaredo Mills 9/2/2023
在许多项目中,您可以使用在执行命令时显示命令。make V=1