Slackware更新后libtool找不到libfontconfig.la问题排查求助
Slackware更新后编译项目的libtool错误排查与解决
问题背景
更新Slackware后编译项目时触发如下错误:
libtool: error: cannot find the library '/usr/lib64/libfontconfig.la' or unhandled argument '/usr/lib64/libfontconfig.la'
项目本身不生成静态库,且Slackware已移除系统中的.la文件。
问题1:如何定位依赖libfontconfig.la的部分?原因是什么?
排查方法
- 先排查项目本地文件:检查项目根目录及
src/下的Makefile、pkgconfig配置文件,确认是否直接引用libfontconfig.la; - 若本地无直接引用,使用
libtool --debug命令重新编译,通过调试输出追踪依赖调用链。
原因分析
本例中,依赖来自系统库/usr/lib64/libgnomecanvas-2.la的dependency_libs字段——旧的.la文件会记录依赖的其他.la文件路径,而Slackware更新后清理了libfontconfig.la,导致libtool解析依赖时找不到文件报错。
问题2:是否应该调用libtool?
如果项目不需要libtool的特殊功能(比如跨平台静态库构建、版本化库管理),可以不调用libtool:
- 若项目用autotools构建,可修改
configure.ac或Makefile.am,跳过libtool调用,直接使用-lfontconfig这类标准链接参数完成编译; - 临时应急方案:手动编辑
/usr/lib64/libgnomecanvas-2.la,删除dependency_libs中涉及libfontconfig.la的条目,替换为-lfontconfig。注意此方法是临时的,系统库更新后会被覆盖。
内容的提问来源于stack exchange,提问作者jcoppens
相关产品推荐
相关产品推荐

