Qemu-system-aarch64启动报错:已存在符号无法被找到的原因咨询
Qemu-system-aarch64 符号查找错误排查
问题描述
在Ubuntu 18.04.4 LTS系统通过apt-get安装Qemu后,执行qemu-system-aarch64命令时触发以下错误:
qemu-system-aarch64: symbol lookup error:
/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0: undefined symbol:
cairo_ft_scaled_font_unlock_face
执行nm -gD /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 | grep cairo_ft检查库符号,输出为:
U cairo_ft_scaled_font_unlock_face
注意:nm输出中的U代表该符号未定义,意味着libpangocairo需要依赖其他库(这里是libcairo)提供这个符号,而非该符号已存在于libpangocairo中。
可能原因
- 库版本不兼容:
cairo_ft_scaled_font_unlock_face是cairo 1.15.4及以上版本才引入的符号。虽然Ubuntu 18.04默认libcairo2版本为1.15.10(理论上包含该符号),但可能存在库补丁缺失、版本回退或编译异常的情况,导致符号无法被正确识别。 - 库路径冲突:系统中存在多个版本的cairo库,Qemu运行时加载了旧版本或非系统默认的cairo库,导致找不到目标符号。例如手动安装过第三方cairo版本后未清理,或者
LD_LIBRARY_PATH环境变量指向了错误的库路径。 - 安装包损坏:apt安装过程中出现中断、缓存损坏等问题,导致Qemu或依赖库的文件损坏、符号链接错误。
解决建议
- 重新安装依赖库与Qemu:
执行以下命令重新安装相关组件,修复可能的损坏文件:sudo apt-get update sudo apt-get install --reinstall libcairo2 libpangocairo-1.0-0 qemu-system-arm - 检查并修正库加载路径:
- 查看Qemu实际加载的cairo库路径:
ldd /usr/bin/qemu-system-aarch64 | grep cairo - 确认路径为系统默认的
/usr/lib/x86_64-linux-gnu/libcairo.so.2,如果路径异常,临时清空LD_LIBRARY_PATH后重试:unset LD_LIBRARY_PATH && qemu-system-aarch64
- 查看Qemu实际加载的cairo库路径:
- 升级系统或使用兼容PPA:
如果上述方法无效,可考虑升级到Ubuntu 20.04及以上版本(系统库版本更完善),或者添加Qemu官方稳定版PPA获取适配的安装包:sudo add-apt-repository ppa:qemu-team/qemu-stable sudo apt-get update sudo apt-get install qemu-system-arm
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

