提问人:jcoppens 提问时间:7/1/2023 最后编辑:jcoppens 更新时间:8/30/2023 访问量:177
libtool:找不到库...为什么?
libtool: Cannot find the library... Why?
问:
虽然我很少创建静态库,但在更新 Slackware 后,我收到以下错误:
libtool: error: cannot find the library '/usr/lib64/libfontconfig.la' or unhandled argument '/usr/lib64/libfontconfig.la'
项目不创建库。此外,Slackware会删除.la文件。
问:我怎样才能知道该计划的哪一部分是必需的?为什么?libfontconfig.la
问:应该打电话吗?libtool
答:
0赞
Jaredo Mills
8/30/2023
#1
对于你的第一个问题,冒烟枪是 - 这意味着在你的 Makefile 中的某个地方,字符串会出现。您的项目似乎直接或间接依赖于 fontconfig 库。我用于跟踪此情况的步骤是:unhandled argument '/usr/lib64/libfontconfig.la'
/usr/lib64/libfontconfig.la
- 从 make 输出中,找到哪个目录有问题。
- 检查该目录中的变量,并查找为字符串 libfontconfig.la 分配的变量。它可能类似于
Makefile
BLAH_LIBS = ${libdir}/libfontconfig.la
- 该变量名称 BLAH_LIBS 可能是由 pkgconfig 生成的,因为
configure.ac 语句中,例如“查找包”blah“,然后从其 blah.pc 文件中,使用前缀 BLAH 和后缀 _LIBS 和 _CFLAGS 构造 and 变量,并将它们替换在 Makefile 中出现的位置'
PKG_CHECK_MODULES([BLAH], [blah])
BLAH_LIBS
BLAH_CFLAGS
@BLAH_LIBS@
@BLAH_CFLAGS@
- 由 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
评论