编译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,重新编译安装以确保符号完整:
- 下载与编译需求匹配的LibXml2源码(建议使用WebKit推荐的版本)
- 编译安装时指定正确的参数:
./configure --prefix=/usr/local --enable-shared make sudo make install sudo ldconfig
- 验证修复结果:
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
相关产品推荐
相关产品推荐

