![当我已经使用 freetype 2.9 时,如何修复“libQt5XcbQpa.so.5:未定义符号:FT_Get_Font_Format”?](https://linux22.com/image/1017228/%E5%BD%93%E6%88%91%E5%B7%B2%E7%BB%8F%E4%BD%BF%E7%94%A8%20freetype%202.9%20%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%E2%80%9ClibQt5XcbQpa.so.5%EF%BC%9A%E6%9C%AA%E5%AE%9A%E4%B9%89%E7%AC%A6%E5%8F%B7%EF%BC%9AFT_Get_Font_Format%E2%80%9D%EF%BC%9F.png)
我终于从 16.04 升级到了 18.04。Teamviewer 在 16.04 中运行良好。升级后,当我尝试启动 GUI 时,它显示:
/opt/teamviewer/tv_bin/TeamViewer: symbol lookup error: /opt/qt514/lib/libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format
我确保它已经在足够新的 freetype 版本上,因为整个 FT_Get_X11_Font_Format 与 FT_Get_Font_Format 问题通常会导致此错误。
看起来该功能可用:
rreese@rreese-desktop:~$ sudo readelf -s /usr/lib/x86_64-linux-gnu/libfreetype.so | grep -i font_format
195: 000000000000fc10 2 FUNC GLOBAL DEFAULT 12 FT_Get_X11_Font_Format
208: 000000000000fbe0 43 FUNC GLOBAL DEFAULT 12 FT_Get_Font_Format
我尝试升级 QT,认为这可能是问题所在,但 5.14 也给出了同样的错误。我有点束手无策了。有人有什么建议吗?
谢谢!
答案1
因此,事实证明,/etc/ld.so.conf.d/ 中有一个针对 FFMPEG 的旧“修复”,它指向另一个 lib 文件夹。它一定是优先的,因为我看到当我使用 strace 运行 teamviewer 时,它使用的是那里的 libfreetype.so.6。一定是没有 FT_Get_Font_Format 的旧版本,因为当我删除该“修复”时,它抓取了正确的版本并且一切正常。