简体   繁体   English

Qemu 在 libpangocairop.so 库中找不到现有符号

[英]Qemu can't find an existing symbol in libpangocairop.so library

I just installed qemu on my Ubuntu 18.04.4 LTS via apt-get, but when I executed qemu-system-aarch64 command it said:我刚刚通过 apt-get 在我的 Ubuntu 18.04.4 LTS 上安装了 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 qemu-system-aarch64:符号查找错误:/usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0:未定义符号:cairo_ft_scaled_font_unlock_face

After that, I used nm -gD libpangocairo-1.0.so.0 | grep cairo_ft之后,我使用了nm -gD libpangocairo-1.0.so.0 | grep cairo_ft nm -gD libpangocairo-1.0.so.0 | grep cairo_ft command to check symbols in the mentioned library and I found: nm -gD libpangocairo-1.0.so.0 | grep cairo_ft命令检查上述库中的符号,我发现:

U cairo_ft_scaled_font_unlock_face U cairo_ft_scaled_font_unlock_face

which indicated the symbol was there in the library.这表明该符号在图书馆中。 So I wonder what caused the qemu binary couldn't find the existing symbol?所以我想知道是什么导致 qemu 二进制文件找不到现有符号?

"U" means "undefined" -- that is, libpangocairo-1.0.so.0 requires this symbol, and expects it to be provided by some other library. “U”表示“未定义”——也就是说,libpangocairo-1.0.so.0 需要这个符号,并期望它由其他库提供。

On my Ubuntu system this is provided by /usr/lib/x86_64-linux-gnu/libcairo.so.2.11600.0, where 'nm -gD' lists it with a 'T' meaning "defined in this file's text section".在我的 Ubuntu 系统上,这是由 /usr/lib/x86_64-linux-gnu/libcairo.so.2.11600.0 提供的,其中 'nm -gD' 用 'T' 列出它,意思是“在此文件的文本部分中定义”。 (I'm using Ubuntu 20.04 so the exact libcairo.so filename is probably different for you.) (我使用的是 Ubuntu 20.04,所以确切的 libcairo.so 文件名可能对你不同。)

00000000000c1f30 T cairo_ft_scaled_font_unlock_face

On Ubuntu that library should be in the 'libcairo2' package.在 Ubuntu 上,该库应位于“libcairo2”package 中。 However, the Ubuntu package that provides 'libpangocairo' depends on libcairo2 and should have installed it automatically.但是,提供“libpangocairo”的 Ubuntu package 依赖于 libcairo2,应该已经自动安装了它。 You should therefore check whether there's something broken on your system (eg you have an incompatible install of parts of libcairo or libpango in /usr/local or otherwise on your library load path before the system versions of the library, or you've accidentally managed to delete some of the files that libcairo2 installs).因此,您应该检查您的系统是否有问题(例如,在库的系统版本之前,您在 /usr/local 或库加载路径中安装了不兼容的部分 libcairo 或 libpango,或者您不小心管理了删除一些 libcairo2 安装的文件)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM