You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译webkitgtk-2.46.3遇xmllint未定义符号xmlMemSize错误求助

问题分析与解决

问题根源

你遇到的xmlMemSize未定义符号错误,本质是系统中存在两个版本的LibXml2库冲突:

  • Ubuntu 24.04默认的LibXml2安装在/usr/lib/x86_64-linux-gnu/,对应的xmllint在/usr/bin/
  • 你可能手动编译安装过另一个版本的LibXml2到/usr/local/,导致编译WebKit时调用了/usr/local/bin/xmllint,但该程序依赖的LibXml2库缺少xmlMemSize符号(版本不兼容或安装不完整)

cmake检测到的是系统默认的LibXml2,但编译流程中实际调用的是/usr/local下的工具,因此出现检测通过但运行报错的矛盾。


解决方法

方法1:临时切换到系统默认的xmllint

直接调整环境变量,让系统自带的xmllint优先被调用:

export PATH=/usr/bin:$PATH

然后重新执行编译命令:

cmake --build builddir/

如果要永久生效,编辑~/.bashrc文件,添加上述export命令,再执行source ~/.bashrc。

方法2:修复/usr/local下的LibXml2安装

如果你需要保留/usr/local的LibXml2,重新编译安装以确保符号完整:

  1. 下载与编译需求匹配的LibXml2源码(建议使用WebKit推荐的版本)
  2. 编译安装时指定正确的参数:
./configure --prefix=/usr/local --enable-shared
make
sudo make install
sudo ldconfig
  1. 验证修复结果:
xmllint --version
ldd /usr/local/bin/xmllint | grep libxml2

确认输出显示的LibXml2版本与xmllint版本匹配。

方法3:删除/usr/local下的冲突文件

如果不需要/usr/local的LibXml2,直接清理冲突文件,让系统默认版本接管:

sudo rm /usr/local/bin/xmllint
sudo rm -rf /usr/local/lib/libxml2*
sudo rm -rf /usr/local/include/libxml2
sudo ldconfig

清理后重新执行编译命令即可。


内容的提问来源于stack exchange,提问作者Raphael10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:25:58